我遇到的问题是使用操作系统统计在路径上(以C:\myfile1.txt为例)。当我跑的时候操作系统统计在这个文件中,取结果列表中的第9个元素,我得到一些数字形式的修改时间(例如1348167977)。在
注:我不知道这些数字是怎么计算出来的。在
当我创建C:\myfile1.txt时,它有一些类似于上面例子的数字。如果我创建另一个文件C:\myfile2.txt,它会得到一个新的数字,表示修改时间,它比C:\myfile1.txt高(这是我所期望的)。我还有第三个文件C:\myfile3.txt,它是最后创建的。在
如果生成的文件是my2.txt,则以my2.txt的形式出现,则结果为:my2.txt操作系统统计新的C:\myfile3.txt小于C:\myfile1.txt。为什么会这样?C:\myfile3.txt的修改时间应为所有修改时间中的最高值,或至少等于C:\myfile2.txt。在
谢谢你的回答,我希望我能解释清楚。在
编辑:
我在这里描述一些测试代码。有时它是有效的有时数字都是相同的,如果你在不同的时间重新运行它。我想我只是不太明白我输出的时间。在
import os
import shutil
import time
myfile1 = open("C:\\myfile1.txt", 'wt')
myfile1.close()
time.sleep(10)
myfile2 = open("C:\\myfile2.txt", 'wt')
myfile2.close()
time.sleep(10)
myfile2 = open("C:\\myfile3.txt", 'wt')
myfile2.close()
shutil.copyfile("C:\\myfile2.txt", "C:\\myfile3.txt")
modified_time_first = (os.stat("C:\\myfile1.txt")[9])
modified_time_second = (os.stat("C:\\myfile2.txt")[9])
modified_time_third = (os.stat("C:\\myfile3.txt")[9])
print "The first files modified time is: "
print modified_time_first
print ""
print "The second files modified time is: "
print modified_time_second
print ""
print "The third files modified time is: "
print modified_time_third
print ""
一下子,字符串似乎是“epoch time”格式。我使用ipython:
我使用macosx,所以我做了一个
man stat
。似乎stat
返回的第9项是“ctime”。在*nix世界中,“ctime”指的是inode数据修改信息。您可能可以通过执行正在执行的操作来测试是否应该修改此字段。您可以手动执行此操作,并对生成的文件运行stat
,以确认是否应该更改。您可能选错了os.stat
。在你看到的数字是一个UNIX timestamp,它代表了自1970年1月1日以来的秒数。可以使用^{} 将其转换为python datetime对象,例如:
请注意,
^{pr2}$os.stat()
返回一个命名元组;您也可以通过名称访问该元组上的属性:请参阅^{} documentation 以获取可用的所有属性。在
另一方面,您访问了
st_ctime
值;python元组和列表索引从0开始,因此9th元素是索引8。您访问了索引10,即文件的创建时间。在如果您只需要文件的修改时间,您还可以使用^{} 作为方便快捷方式:
复制文件时,它的属性(如上次修改时间戳)通常都包含在内,因此新复制的文件的修改时间可以很容易地更改,包括向后和向前。这同样适用于创建时间。在
相关问题 更多 >
编程相关推荐