使用Python,选择在过去60天内修改过的目录中的文件



我使用了glob.glob来列出目录中的文件。

files = glob.glob("C:/Folder/*.csv")

我想将该列表缩小到仅列出在过去60天内修改的文件。我不知道该怎么做。在谷歌上偶然发现了os.path.getmtime(),但我不知道如何将其应用于files = glob.glob("C:/Folder/*.csv")

有什么想法吗?

基于您已经提供的内容和您已经知道的os.path.getmtime(),您可以使用time.time()函数来获取当前时间。您可以将修改后的时间从当前时间中减去,以获得以秒为单位的时间差。我用(60*60*24)把它保存到天。

以下代码执行这些步骤中的每一个:

import glob
import os
import time
files = glob.glob("C:/Folder/*.csv")
modified_files = list()
current_time = time.time()
for csv_file in files:
time_delta = current_time - os.path.getmtime(csv_file)
time_delta_days = time_delta / (60 * 60 * 24)
if time_delta_days < 60:
modified_files.append(csv_file)
print(modified_files)

编辑:写这篇文章的一种更像蟒蛇的方式可能是:

import glob
import os
import time
def test_modified(filename):
delta = time.time() - os.path.getmtime(filename)
delta = delta / (60*60*24)
if delta < 60:
return True
return False
mfiles = [mfile for mfile in glob.glob("C:/Folder/*.csv") if test_modified(mfile)]
print(mfiles)

pathlib模块示例:

from pathlib import Path
import time
folder = Path(r"d:temp")
files = list(folder.glob("*.csv"))
sixty_days_ago = time.time() - (60*60*24) * 60
fresh_files = [f for f in files if f.stat().st_mtime > sixty_days_ago]
for f in fresh_files: print(f)

您可以使用sort按上次修改时间过滤文件夹中的元素:

files = glob.glob(folder_path)
files.sort(key=os.path.getmtime, reverse=True)

通过这种方式,您将获得按上次修改时间排序的文件夹中的项目列表。

最新更新