我使用 Python 2.7.5 运行以下代码。在 Windows 下:
import os, shutil, stat, time
with open('test.txt', 'w') as f: pass # create an arbitrary file
shutil.copy('test.txt', 'test2.txt') # copy it
shutil.copystat('test.txt', 'test2.txt') # copy its stats, too
t1 = os.lstat('test.txt').st_mtime # get the time of last modification for both files
t2 = os.lstat('test2.txt').st_mtime
print t1 # prints something like: 1371123658.54
print t2 # prints the same string, as expected: 1371123658.54
print t1 == t2 # prints False! Why?!
我希望两个时间戳(=floats)是相等的(正如它们的字符串表示所暗示的那样),那么为什么t1 == t2
评估为False
?
此外,我无法用更少的代码重现这种行为,即不比较os.lstat
从两个不同文件中检索到的时间戳。我有一种感觉,我在这里遗漏了一些微不足道的东西......
编辑:经过进一步测试后,我注意到它确实偶尔打印
True
一次,但不会超过每 10 次运行一次。
编辑 2:正如 larsmans 所建议的:
print ("%.7f" % t1) # prints e.g. 1371126279.1365688
print ("%.7f" % t2) # prints e.g. 1371126279.1365681
这提出了两个新问题:
- 为什么调用后时间戳不相等
shutil.copystat
? print
轮次默认浮动?!