os.path.getmtime()不返回秒的分数

时间:2010-03-11 20:50:37

标签: python linux centos

我为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如何配置文件系统?在这种情况下我需要检查什么?

1 个答案:

答案 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

ext4 Wikipedia article

中对此进行了描述
  

改进了时间戳

     

随着计算机变得越来越快,随着Linux越来越多地用于关键任务应用程序,基于秒的时间戳的粒度变得不足。为了解决这个问题,ext4提供以纳秒为单位的时间戳。此外,将2比特的扩展时间戳字段添加到时间戳的秒字段的最高有效位,以将年2038问题推迟另外204年。