首页 > 解决方案 > 遍历文件但按创建时间排序

问题描述

我试图迭代文件,但希望首先迭代较新的文件。

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

此代码工作正常,但它迭代按文件名而不是创建时间排序。如何才能做到这一点?

标签: pythontimeiteration

解决方案


您可以像这样使用“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用于创建时间


推荐阅读