如何获取目录中最后修改的文件?
How to get last modified file in a directory?
我想用 python 获取最后 1 小时 modified/created 的文件。我试过这段代码,但它只获取了最后创建的文件。如果我创建了 10 个文件,它只显示最后一个。如何获取最近 1 小时创建的文件?
import glob
import os
list_of_files = glob.glob('c://*')
latest_file = max(list_of_files, key=os.path.getctime)
print(latest_file)
你基本上可以这样做:
- 获取文件列表
- 获取他们每个人的时间(也检查
os.path.getmtime()
更新)
- 使用
datetime
模块获取要比较的值(即 1h)
- 比较
为此,我使用字典以紧凑格式存储路径和时间戳。然后你可以按它的值(dict.values()
)(它是一个浮点数,时间戳)对字典进行排序,这样你将得到在 1 小时内创建的最新文件,这些文件是 排序的 . (例如通过 sorted(...)
函数):
import os
import glob
from datetime import datetime, timedelta
hour_files = {
key: val for key, val in {
path: os.path.getctime(path)
for path in glob.glob("./*")
}.items()
if datetime.fromtimestamp(val) >= datetime.now() - timedelta(hours=1)
}
或者,没有理解:
files = glob.glob("./*")
times = {}
for path in files:
times[path] = os.path.getctime(path)
hour_files = {}
for key, val in times.items():
if datetime.fromtimestamp(val) < datetime.now() - timedelta(hours=1):
continue
hour_files[key] = val
或者,也许您的文件夹很乱,文件太多。在这种情况下,逐步处理它:
hour_files = {}
for file in glob.glob("./*"):
timestamp = os.path.getctime(file)
if datetime.fromtimestamp(timestamp) < datetime.now() - timedelta(hours=1):
continue
hour_files[file] = timestamp
我想用 python 获取最后 1 小时 modified/created 的文件。我试过这段代码,但它只获取了最后创建的文件。如果我创建了 10 个文件,它只显示最后一个。如何获取最近 1 小时创建的文件?
import glob
import os
list_of_files = glob.glob('c://*')
latest_file = max(list_of_files, key=os.path.getctime)
print(latest_file)
你基本上可以这样做:
- 获取文件列表
- 获取他们每个人的时间(也检查
os.path.getmtime()
更新) - 使用
datetime
模块获取要比较的值(即 1h) - 比较
为此,我使用字典以紧凑格式存储路径和时间戳。然后你可以按它的值(dict.values()
)(它是一个浮点数,时间戳)对字典进行排序,这样你将得到在 1 小时内创建的最新文件,这些文件是 排序的 . (例如通过 sorted(...)
函数):
import os
import glob
from datetime import datetime, timedelta
hour_files = {
key: val for key, val in {
path: os.path.getctime(path)
for path in glob.glob("./*")
}.items()
if datetime.fromtimestamp(val) >= datetime.now() - timedelta(hours=1)
}
或者,没有理解:
files = glob.glob("./*")
times = {}
for path in files:
times[path] = os.path.getctime(path)
hour_files = {}
for key, val in times.items():
if datetime.fromtimestamp(val) < datetime.now() - timedelta(hours=1):
continue
hour_files[key] = val
或者,也许您的文件夹很乱,文件太多。在这种情况下,逐步处理它:
hour_files = {}
for file in glob.glob("./*"):
timestamp = os.path.getctime(file)
if datetime.fromtimestamp(timestamp) < datetime.now() - timedelta(hours=1):
continue
hour_files[file] = timestamp