使用Python2.7 cen从其他用户主文件夹读取创建文件日期

2024-09-30 22:14:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个脚本,通过查看文件创建日期来检查何时进行了最新备份。你知道吗

这些文件位于centOS7计算机的不同用户主文件夹中。你知道吗

我很肯定这和特权有关,但我尝试过的一切都失败了。你知道吗

这是我的密码

#!/usr/bin/env python2.7

import os
import time
import glob
from datetime import date, datetime

date_format = "%m/%d/%Y"

def checkBackup (location, fileName, interval):
    newest = max(glob.iglob(fileName), key=os.path.getctime)
    created = time.strftime('%D', time.localtime(int(os.path.getctime(location+newest))))
    cDate = datetime.strptime(created[:6] + '20' + created[6:], date_format)
    localTime = time.strftime('%D')
    cTime = datetime.strptime(localTime[:6] + '20' + localTime[6:], date_format)
    delta = cTime-cDate

    if delta.days > interval:
            file.write("Missing backup for " + newest + "    ERROR!\n")
    else:
            file.write(newest + " SUCCESSFUL BACKUP\n")
            return;

file = open("backupStatus.txt","w")
checkBackup("/home/user1/","backupFile.gz",30);
checkBackup("/home/user2/","backupFile.gz",30);
file.close()

当以user1身份运行这个脚本时,我在backupStatus.txt文件文件,但在尝试检查user2的主文件夹中文件的状态时,我得到了错误:

Traceback (most recent call last):
File "checkBackup.py", line 26, in <module>
checkBackup("/home/user2/","backupFile.gz",30);
File "checkBackup.py", line 11, in checkBackup
newest = max(glob.iglob(fileName), key=os.path.getctime)
ValueError: max() arg is an empty sequence

我已经将user1添加到user2组中,并认为这样可以解决问题,但是我仍然得到这个错误,即使以root身份运行这个,我也得到了这个错误。你知道吗

这是我在stackoverflow的第一篇文章,所以我希望我用正确的方式写了这个问题。我已经有几年没有用python做过任何事情了,所以请随时告诉我如何改进代码!你知道吗

那么,有人知道我怎么解决这个问题吗?你知道吗

敬礼

安东


Tags: 文件pathimportformatdatetimedatetimeos
1条回答
网友
1楼 · 发布于 2024-09-30 22:14:28

以下代码起作用。 它以前不起作用的原因是因为我只让glob检查文件名,而没有检查文件名的正确路径,所以它只对同一目录中的文件起作用。你知道吗

在@cdarke的帮助下,我将文件路径添加到glob中,并且可以成功地从其他用户/主文件夹获取信息,但是在那之后,下一行有一个不正确的路径(在字符串中添加了两次路径),方法是删除一切都按预期工作。你知道吗

#!/usr/bin/env python2.7

import os
import time
import glob
from datetime import date, datetime

date_format = "%m/%d/%Y"

def checkBackup (location, fileName, interval):
    newest = max(glob.iglob(location + fileName), key=os.path.getctime)
    created = time.strftime('%D', time.localtime(int(os.path.getctime(newest))))
    cDate = datetime.strptime(created[:6] + '20' + created[6:], date_format)
    localTime = time.strftime('%D')
    cTime = datetime.strptime(localTime[:6] + '20' + localTime[6:], date_format)
    delta = cTime-cDate

    if delta.days > interval:
            file.write("Missing backup for " + newest + "    ERROR!\n")
    else:
            return;

file = open("backupStatus.txt","w")
checkBackup("/home/user1/","backupFile.gz",30);
checkBackup("/home/user2/","backupFile.gz",30);
file.close()

相关问题 更多 >