使用Python过滤磁盘文件
我正在使用下面的代码来从磁盘上删除文件。
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.getmtime
或 os.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)