我正在尝试创建一个脚本,用于检查文件夹中是否存在超过7天的文件并删除它们,但仅限于“now”中小于1天的文件存在。
因此,如果创建的文件少于1天,则删除所有超过7天的文件。
这是我的脚本 -
import os, time
path = r"C:\Temp" #working path#
now = time.time()
for f in os.listdir(path):
f = os.path.join(path, f)
if os.stat(os.path.join(path, f).st_mtime < now -1 * 86400 and\ #checking new file#
if os.stat(os.path.join(path,f)).st_mtime < now - 7 * 86400: #checking old files#
if os.path.isfile(f):
os.remove(os.path.join(path, f)
我在检查旧文件的行中遇到语法错误。我没有正确缩进,这是一种无效的编码方式吗?程序每天都会创建一个新文件。此脚本检查是否已创建该文件,如果为true,则检查超过七天的文件并删除它们。我不明白语法错误,逻辑是正确的,我是对的吗?
答案 0 :(得分:4)
import os, time
path = r"C:\Temp" #working path#
now = time.time()
old_files = [] # list of files older than 7 days
new_files = [] # list of files newer than 1 day
for f in os.listdir(path):
fn = os.path.join(path, f)
mtime = os.stat(fn).st_mtime
if mtime > now - 1 * 86400:
# this is a new file
new_files.append(fn)
elif mtime < now - 7 * 86400:
# this is an old file
old_files.append(fn)
# else file between 1 and 7 days old, ignore
if new_files:
# if there are any new files, then delete all old files
for fn in old_files:
os.remove(fn)
答案 1 :(得分:0)
您的代码存在一些问题,
您在以下行中缺少结束括号:
如果os.stat(os.path.join(path,f).st_mtime&lt; now -1 * 86400
实际应该是:
if os.stat(os.path.join(path, f)).st_mtime < now -1 * 86400
不需要和
如果os.stat(os.path.join(path,f).st_mtime&lt; now -1 * 86400和\ #checking new file# 如果os.stat(os.path.join(path,f))。st_mtime&lt;现在 - 7 * 86400:
它应该是:
if os.stat(os.path.join(path, f)).st_mtime < now -1 * 86400 and\ #checking new file#
os.stat(os.path.join(path,f)).st_mtime < now - 7 * 86400:
尝试使用Brackets作为您的陈述,
如果os.stat(os.path.join(path,f))。st_mtime&lt; (现在-1 * 86400)和os.stat(os.path.join(path,f))。st_mtime&lt; (现在 - 7 * 86400):