使用Python过滤磁盘文件

3 投票
2 回答
1950 浏览
提问于 2025-04-17 01:15

我正在使用下面的代码来从磁盘上删除文件。

    def match_files(dir, pattern):
       for dirname, subdirs, files in os.walk(dir):
          for f in files:
             if f.endswith(pattern):
                yield os.path.join(dirname, f)

    # Remove all files in the current dir matching *.txt
    for f in match_files(dn, '.txt'):
       os.remove(f)

我想要删除那些“今天没有更新过”的文件。首先列出今天的文件,然后和这个列表进行对比。

2 个回答

1

什么是“模式”?

另外,“os.stat”可以提供文件的日期信息。这里有一个示例,显示的是“最后修改”的日期。

    stats = os.stat(file)
    lastmod_date = time.localtime(stats[8])
3

除了使用 os.stat,你还可以用 os.path.getmtimeos.path.getctime。这两者的优缺点在 这个问题中有讨论。你可以用 datetime.datetime.fromtimestamp 把返回的时间戳转换成 datetime 对象,这样你就可以随意处理这些数据了。在这个例子中,我会删除今天没有被修改的文件,并创建一个剩余文件的列表:

from datetime import datetime, timedelta

today = datetime.now().date()
remaining = []
for f in match_files(dn, '.txt'):
   mtime = datetime.fromtimestamp(os.path.getmtime(f)).date()
   if mtime != today:
       os.remove(f)
   else:
       remaining.append(f)

撰写回答