使用Python2.7 centOS

时间:2017-04-27 08:30:50

标签: python centos7 glob

我正在编写一个脚本,通过查看文件创建日期来检查最新备份的时间。

这些文件位于不同用户主文件夹的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完成任务以来已经有几年了,所以请随时给我一些关于如何改进代码的提示!

那么,有没有人知道如何解决这个问题?

此致

安东

1 个答案:

答案 0 :(得分:0)

以下代码有效。 之前它不起作用的原因是因为我只有glob检查fileName而不是它的正确路径,所以它只适用于同一目录中的文件。

在@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()