在某个时间点

时间:2015-11-12 19:51:47

标签: python python-2.7

我的目录系统设置如下:

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()未按任何特定顺序返回文件夹结果。

2 个答案:

答案 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