我正在尝试连接两个函数,一个遍历目录并查找文件名,将名称发送到函数以检查是否存在超过 30 天的文件,如果不满足条件则删除文件。
我尝试练习使用生成器,并使函数之间优雅地“流动”,但它破坏了 for 循环和函数,因此需要重新激活函数。
import os
from datetime import datetime,timedelta
PATH = os.path.abspath(os.path.dirname(__file__)) + '\folder'
def get_dates(p):
for path, dirs, files in os.walk(p):
for file in files:
fullname = path+ '\\'+file
mtime = os.stat(fullname).st_ctime
yield (delete_not_needed(fullname, mtime))
def delete_not_needed(fullname, mtime):
file_time = datetime.fromtimestamp(mtime)
if datetime.today()-file_time> timedelta(days=30):
os.remove(fullname)
if __name__ == '__main__':
next(get_dates(PATH))
我怎样才能让这项工作连接这些功能?
您应该返回文件名,然后遍历生成器以删除这些文件。
def delete_not_needed(fullname, mtime):
file_time = datetime.fromtimestamp(mtime)
if datetime.today()-file_time> timedelta(days=30):
return fullname
if __name__ == '__main__':
files_to_delete = get_dates(PATH)
for file in files_to_delete:
if file:
os.remove(file)
我是一名优秀的程序员,十分优秀!