python - 遍历文件但按创建时间排序
问题描述
我试图迭代文件,但希望首先迭代较新的文件。
import os
directory = os.getcwd() + "\\Images"
for file in os.listdir(directory):
filename = os.fsdecode(file)
if filename.endswith(".png") or filename.endswith(".jpg"):
#blablabla
此代码工作正常,但它迭代按文件名而不是创建时间排序。如何才能做到这一点?
解决方案
您可以像这样使用“glob”:
import glob
import os
os.chdir("/Images")
files = glob.glob("./*")
files.sort(key=os.path.getmtime)
for file in files:
filename = os.fsdecode(file)
if filename.endswith(".png") or filename.endswith(".jpg"):
#blablabla
或者你可以像这样使用 lambda 表达式:
import os
directory = os.getcwd()+ "\\Images"
files = os.listdir(directory)
files.sort(key=lambda x: os.stat(os.path.join(directory, x)).st_mtime)
for file in files:
filename = os.fsdecode(file)
if filename.endswith(".png") or filename.endswith(".jpg"):
#blablabla
使用按修改时间排序的方式st_mtime
,可以st_ctime
用于创建时间
推荐阅读
- mongodb - 如何在 mongodb 的模式中设置多个唯一索引?
- php - 两个相似的 PHP 表单,但只有一个在工作
- python - 在 django rest 中更新多个对象
- c++ - 我需要一个正则表达式来标记 C++ 中引号内的多个单词
- wordpress - 在 wordpress 菜单中无法单击父类别
- javascript - 使用 vue 将输入元素附加到表单字段集
- python - 每次导入 pixiedust 时 Jupyter Notebook 内核都会重新启动
- visual-studio-code - 一个 VS Code 语法范围是否可以出于主题目的引用另一个?
- ios - 使用 Firebase 登录时如何自动引用?
- opencv - 无论旋转如何,如何在图像上找到特定点?