所有
我试图编写一个脚本来检查文件夹中某些文件的年龄,并在创建新文件时删除旧文件。如果没有创建新文件,那么它不会删除旧文件,它会向我发送一封电子邮件,告诉我没有创建新文件。
我使用OS模块ctime来检查文件的年龄,并且我使用外部脚本" sendmail"处理电子邮件。
现在可以正常工作,它可以正确地确定旧文件和新文件,然后删除旧文件,但它无法正确决定是否调用sendmail。让我告诉你:
for fn in os.listdir(path, f)
fn = os.path.jion(path, f)
ctime = os.stat(fn).st_ctime
if ctime > now - 1 * 86400: #this is a new file
new_files.append(fn)
countit = new_files.count(fn) #counting the occurence of appended files
if new_Files.count(fn) > countit: #checks the list
import sendmail
sendmail
elif ctime < now - 10 * 86400: #checking for old file
old_files.append(fn)
if new_files:
for fn in old_files:
os.remove(fn)
那么,我可以得到一些帮助吗?我真的卡住了。我应该使用elif
语句检查我的列表,如下所示:
if ctime > now - 1 * 86400:
new_files.append(fn)
elif:
import sendmail
sendmail
这是一种正确的写法吗?有没有正确的方法来写这个决定?我的整个剧本错了吗?
编辑 - 对不起,如果我发牢骚,我已经在这方面工作了一段时间,这非常令人沮丧。我感谢您提供的任何帮助!!!答案 0 :(得分:1)
看起来你可能想做这样的事情:
for fn in os.listdir(path, f):
fn = os.path.join(path, f)
ctime = os.stat(fn).st_ctime
if ctime > now - 1 * 86400: #this is a new file
new_files.append(fn)
countit = new_files.count(fn) #counting the occurrence of appended files
elif ctime < now - 10 * 86400: #checking for old file
old_files.append(fn)
if new_files:
for fn in old_files:
os.remove(fn)
else:
import sendmail
sendmail.sendmail()
答案 1 :(得分:0)
我无法确定sendmail究竟在做什么/应该做什么。你也可以发布那个模块吗?
另外,我建议将import语句放在文件的顶部,这样就不必多次导入文件了。这应该会显着提高性能。
另外,我无法理解“os.listdir(path,f)”行正在做什么。每当我尝试使用带有多个参数的方法os.listdir时,我都会收到错误。这是一个错字吗?
答案 2 :(得分:0)
我使用OS模块ctime来检查文件的年龄......
糟糕! ctime不是在所有操作系统上创建文件的时候;除非您确定自己所在的操作系统,否则不依赖它。 mtime是最后一次修改时间,但在所有操作系统上都受支持。