我为centos 5.3编译了python 2.6.4并发现了os.path.getmtime()或os.stat().m_time没有小数部分的问题.根据文档,如果os.stat_float_times()返回True,那么它应返回float值.在我的情况下,我确实看到它是浮动的,但没有分数部分(它是0).
In [3]: os.path.getmtime('/tmp') Out[3]: 1268339116.0 In [4]: os.stat('/tmp') Out[4]: posix.stat_result(st_mode=17407, st_ino=508897L, st_dev=29952L, st_nlink=7, st_uid=0, st_gid=0, st_size=4096L, st_atime=1268101696, st_mtime=1268339116, st_ctime=1268339116) In [5]: os.stat_float_times() True In [6]: os.stat('/tmp').st_mtime Out[6]: 1268339116.0
stat()输出看起来像一个int也很奇怪.在Windows上,我确实看到了一个具有相同python版本的小部分.我在colinux上运行centos,可能是扮演一个角色,还是一些python构建问题?我找不到任何针对通用colinux问题的点击.可能是colinux如何配置文件系统?在那种情况下我需要检查什么?
这是一个文件系统限制,而不是Python.Centos仍然在ext3上,它提供整数mtimes.如果你显示mtimes,你可以看到这个ls
.尝试
ls -ld --full-time /tmp
在我的ext3 Centos盒子上,我明白了
drwxrwxrwt 11 root root 69632 2010-03-11 13:16:30.000000000 -0800 /tmp
在我的ext4 Ubuntu盒子上,我明白了
drwxrwxrwt 16 root root 20480 2010-03-11 21:20:02.088188962 +0000 /tmp
这在ext4维基百科文章中有所描述:
改进了时间戳
随着计算机变得越来越快,随着Linux越来越多地用于关键任务应用程序,基于秒的时间戳的粒度变得不足.为了解决这个问题,ext4提供以纳秒为单位的时间戳.此外,将2比特的扩展时间戳字段添加到时间戳的秒字段的最高有效位,以将年2038问题推迟另外204年.