使用 Python2.7 centOS 从其他用户主文件夹读取创建文件日期
Read creation file date from other users home folders with Python2.7 centOS
我正在编写一个脚本,该脚本将通过查看文件创建日期来检查何时进行了最新备份。
这些文件位于不同用户主文件夹中的 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()
当 运行 这个脚本作为用户 1 时,我在 backupStatus.txt 文件中得到一个新条目,但是当我试图检查用户 2 的主文件夹中文件的状态时,我得到了错误:
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 身份我也收到此错误。
这是我在 Whosebug 中的第一个 post,所以我希望我以正确的方式写下了这个问题。我也有几年没用 python 做过任何事情了,所以请随时给我一些改进代码的提示!
那么,有人知道我该如何解决这个问题吗?
此致
安东
以下代码有效。
它之前不起作用的原因是因为我只让 glob 检查文件名而不是正确的路径,所以它只适用于同一目录中的文件。
在@cdarke 的帮助下,我将文件路径添加到 glob 中,并且可以成功地从其他用户 /home 文件夹中获取信息,但之后下一行的路径不正确(将路径添加到字符串中两次) ,通过删除一切按预期工作。
#!/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()
我正在编写一个脚本,该脚本将通过查看文件创建日期来检查何时进行了最新备份。
这些文件位于不同用户主文件夹中的 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()
当 运行 这个脚本作为用户 1 时,我在 backupStatus.txt 文件中得到一个新条目,但是当我试图检查用户 2 的主文件夹中文件的状态时,我得到了错误:
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 身份我也收到此错误。
这是我在 Whosebug 中的第一个 post,所以我希望我以正确的方式写下了这个问题。我也有几年没用 python 做过任何事情了,所以请随时给我一些改进代码的提示!
那么,有人知道我该如何解决这个问题吗?
此致
安东
以下代码有效。 它之前不起作用的原因是因为我只让 glob 检查文件名而不是正确的路径,所以它只适用于同一目录中的文件。
在@cdarke 的帮助下,我将文件路径添加到 glob 中,并且可以成功地从其他用户 /home 文件夹中获取信息,但之后下一行的路径不正确(将路径添加到字符串中两次) ,通过删除一切按预期工作。
#!/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()