我为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如何配置文件系统?在这种情况下我需要检查什么?
答案 0 :(得分:6)
这是一个文件系统限制,而不是Python。 Centos仍然在ext3上,它提供整数mtimes。如果使用ls
显示mtimes,则可以看到此信息。尝试
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
中对此进行了描述
改进了时间戳
随着计算机变得越来越快,随着Linux越来越多地用于关键任务应用程序,基于秒的时间戳的粒度变得不足。为了解决这个问题,ext4提供以纳秒为单位的时间戳。此外,将2比特的扩展时间戳字段添加到时间戳的秒字段的最高有效位,以将年2038问题推迟另外204年。