python os.path.getctime 最大值未返回最新项
我有两个文件,一个明显比另一个更新,但当我用os.path.getctime这个函数来排序时,max函数却没有返回最新的文件。
$ 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
>>>
我一定是漏掉了什么...
谢谢大家的帮助
1 个回答
1
我认为命令 ls -t 显示的是最后修改时间(mtime),而不是最后状态改变时间(ctime),而你用的是后者作为关键点。虽然这两者有点相似,但实际上并不完全一样。你可以参考这个链接了解更多:在 Unix 系统中 python 的 getmtime() 和 getctime() 的区别。