python os.path.getctime max不返回最新版本

python os.path.getctime max不返回最新版本,python,linux,date,Python,Linux,Date,我有两个文件,一个显然比另一个更新,但是max function在按os.path.getctime排序时不会返回最新的文件 $ ls -lpat /foo.tar.gz -rw-r--r-- 1 appsc appsc 29653389 May 21 15:05 /foo.tar.gz $ ls -lpat /bar.tar.gz -rw-r--r-- 1 appsc appsc 29653554 May 27 17:30 /bar.tar.gz $ date Wed Jun 4 01:23

我有两个文件,一个显然比另一个更新,但是max function在按os.path.getctime排序时不会返回最新的文件

$ ls -lpat /foo.tar.gz
-rw-r--r-- 1 appsc appsc 29653389 May 21 15:05 /foo.tar.gz
$ ls -lpat /bar.tar.gz
-rw-r--r-- 1 appsc appsc 29653554 May 27 17:30 /bar.tar.gz
$ date
Wed Jun  4 01:23:29 UTC 2014
$ python3
Python 3.3.2 (default, Nov  6 2013, 12:16:42) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> compare = ['/bar.tar.gz', '/foo.tar.gz']
>>> print(max(compare, key=os.path.getctime))
/foo.tar.gz
>>> print(max(compare, key=lambda x: os.path.getctime(x)))
/foo.tar.gz
>>> 
那里一定有我错过的东西


感谢您的帮助

我相信ls-t显示的是最后一个mtime而不是最后一个ctime,这就是您正在使用的键。虽然mtime和ctime相似,但它们并不完全相同——请参阅以供参考。

您确定要使用getctime()(上次元数据更改)而不是getmtime()(上次修改)?您是对的,getmtime()是我应该使用的。谢谢,我为自己感到惭愧。最糟糕的是,我所有的代码都是用getctime编写的。经过两周的生产,它昨天才第一次表现得很奇怪。