Python嵌套的IF语句

时间:2012-09-20 15:04:11

标签: python python-2.7

我正在尝试创建一个脚本,用于检查文件夹中是否存在超过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,则检查超过七天的文件并删除它们。我不明白语法错误,逻辑是正确的,我是对的吗?

2 个答案:

答案 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
  1. 不需要

    如果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:

  2. 它应该是:

    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. 尝试使用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):