1

我正在尝试创建一个脚本来检查文件夹中是否存在超过 7 天的文件并将其删除,但前提是存在距“现在”不到 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)

我在检查旧文件的行中遇到语法错误。我没有正确缩进,这是一种无效的编码方式吗?一个程序每天都会创建一个新文件。此脚本检查该文件是否已创建,如果是,则检查超过 7 天的文件并将其删除。我不明白语法错误,逻辑是正确的,对吗?

4

2 回答 2

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)
于 2012-09-20T15:20:59.207 回答
0

你的代码有一些问题,

  • 您在以下行中缺少右括号:

    如果 os.stat(os.path.join(path, f).st_mtime < 现在 -1 * 86400

实际上应该是:

if os.stat(os.path.join(path, f)).st_mtime < now -1 * 86400
  1. 没有必要,如果

    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:

它应该是:

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:
  1. 尝试在您的陈述中使用括号,即

    如果 os.stat(os.path.join(path, f)).st_mtime < (现在 -1 * 86400) 和 os.stat(os.path.join(path,f)).st_mtime < (现在 - 7 * 86400):

于 2012-09-20T15:29:52.700 回答