首页 > 解决方案 > 如何使用 os.walk 根据修改日期过滤文件夹?

问题描述

我正在遍历一个巨大的目录,但由于它包含超过 500k 的文件,我想根据函数的最后修改日期过滤函数输入的文件夹。

我只想输入过去 7 天内修改过的文件夹。

到目前为止,这是我的代码:

def checkFolderFileTimestamps(rootFolder):
    
    for root, dirs, files in os.walk(rootFolder):
            print(datetime.fromtimestamp(os.path.getmtime(os.path.join(root))).strftime("%Y:%m:%d"))
            
            for file in files:
          
                if file.endswith(".png") and datetime.fromtimestamp(os.path.getmtime(os.path.join(root, file))).strftime("%Y:%m:%d") > datetime.now().strftime("2021:5:1"):
                    print(os.path.join(root, file))
                    print(datetime.fromtimestamp(os.path.getmtime(os.path.join(root, file))).strftime("%Y:%m:%d") == datetime.now().strftime("%Y:%m:%d"))

                    imageArray.append(os.path.join(root, file))
                    imageName.append(file)
                    print(imageArray)

标签: pythonpython-datetimeos.walkos.path

解决方案


我假设您正在寻找在过去 7 天内修改过的根文件夹中的文件夹列表。

import datetime
import os
# Date a week ago
week_ago = datetime.date.today() - datetime.timedelta(days=7)

您可以通过简单的比较来检查日期是否少于一周前。

today = datetime.date.today()
print(today > week_ago)
# Output is True

以下代码生成rootFolder过去 7 天内修改的文件夹列表。

folders = [os.path.join(rootFolder,f.name) for f in os.scandir(rootFolder)
           if f.is_dir() and
           datetime.date.fromtimestamp(os.path.getmtime(os.path.join(rootFolder,f))) > week_ago]

推荐阅读