Python过滤和日期排序列表

时间:2017-01-04 11:06:19

标签: python list

我如何创建一个日期修改的排序列表,其中包含/ var / log中以yum.log开头的所有文件的Python

ls -la /var/log/yum.log*                                                                                                      [17-01-04 11:36:41]
-rw-------. 1 root root     0 Jan  1 03:45 /var/log/yum.log
-rw-------. 1 root root 16062 Jan 13  2016 /var/log/yum.log-20160113
-rw-------. 1 root root 36020 Dec 22 16:28 /var/log/yum.log-20170101

此代码创建列表,但按名称排序。

logdir = '/var/log'
yum_logs = sorted([f for f in os.listdir(logdir) if f.startswith('yum.log')])

如何按修改日期对此列表进行排序,以便最新的yum日志文件出现?

2 个答案:

答案 0 :(得分:2)

您可以使用os.stat获得修改时间:

logdir = '/var/log'
files = [f for f in os.listdir(logdir) if f.startswith('yum.log')]
files.sort(key=lambda x: os.stat(os.path.join(logdir, x)).st_mtime)

答案 1 :(得分:1)

您可以使用os.path.getmtime()

logdir = '/var/log'
yum_logs = [f for f in os.listdir(logdir) if f.startswith('yum.log')]
sorted(yum_logs, key=lambda f: os.path.getmtime(os.path.join(logdir, f)))

您可以将reverse=True传递给sorted以撤销订单:

sorted(yum_logs, key=lambda f: os.path.getmtime(os.path.join(logdir, f)), reverse=True)