按日期顺序搜索Glob?

Jas*_*ers 20 python search glob date

我的python脚本中有这行代码.它搜索特定目录中的所有文件以查找*cycle*.log.

for searchedfile in glob.glob("*cycle*.log"):
Run Code Online (Sandbox Code Playgroud)

这非常有效,但是当我将脚本运行到网络位置时,它不会按顺序搜索它们,而是随机搜索.

有没有办法强制代码按日期顺序搜索?

这个问题已经被问到了php,但我不确定这些差异.

谢谢

jfs*_*jfs 60

按日期排序文件:

import glob
import os

files = glob.glob("*cycle*.log")
files.sort(key=os.path.getmtime)
print("\n".join(files))
Run Code Online (Sandbox Code Playgroud)

另请参见排序方式.


Pab*_*yes 7

本质上与@jfs 相同,但在一行中使用 sorted

import os,glob
searchedfiles = sorted(glob.glob("*cycle*.log"), key=os.path.getmtime)
Run Code Online (Sandbox Code Playgroud)


luk*_*k32 5

出色地。答案是否定的。glob其用途os.listdir由以下描述:

"返回包含路径给定目录中条目名称的列表。该列表是任意顺序的。它不包括特殊条目 '.' 和“..”,即使它们存在于目录中。

所以你真的很幸运你能把它解决掉。你需要自己排序。

这对我有用:

import glob
import os
import time

searchedfile = glob.glob("*.cpp")
files = sorted( searchedfile, key = lambda file: os.path.getctime(file))

for file in files:
 print("{} - {}".format(file, time.ctime(os.path.getctime(file))) )
Run Code Online (Sandbox Code Playgroud)

另请注意,这使用创建时间,如果要使用修改时间,则使用的函数必须是getmtime.