我的目录系统设置如下:
root
├── logs
│ ├── 20151109
│ │ ├── default.log
│ ├── 20151110
│ │ ├── default.log
│ ├── 20151111
│ │ ├── default.log
这些日志每天生成一次并返回大约七个月,但我只想要过去一周的日志文件。因此,如果今天是2015-11-12(2015年11月12日),我希望文件夹中的日志文件从“20151105”(11月5日)到“20151111”(11月11日)。
如何告诉glob.glob()
仅返回这些特定文件的结果?我尝试运行glob.glob("logs/*/default.log")
并抓取生成列表中的最后7个条目,但似乎glob()
未按任何特定顺序返回文件夹结果。
答案 0 :(得分:3)
为什么不对结果进行排序:
sorted(glob.glob("logs/*/default.log"))[-7:]
答案 1 :(得分:1)
这是按日期对所需文件夹中的文件进行排序的方法:
import glob
import os
files = glob.glob("*cycle*.log")
files.sort(key=os.path.getmtime)
print("\n".join(files))
或者您可以尝试:
import glob
import os
import time
searchedfile = glob.glob("*.log")
files = sorted( searchedfile, key = lambda file: os.path.getctime(file))
for file in files:
print("{} - {}".format(file, time.ctime(os.path.getctime(file))) )
另请注意,这会使用创建时间,如果要使用修改时间,则使用的函数必须为getmtime
。