修改时间使用操作系统统计在Python中复制文件时会降低

2024-03-28 17:47:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到的问题是使用操作系统统计在路径上(以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 ""

Tags: 文件importtxttimeos时间数字open
2条回答

一下子,字符串似乎是“epoch time”格式。我使用ipython:

import os
import time
time.ctime(os.stat('index.php')[9])
==>'Fri Jun 15 23:05:07 2012'

我使用macosx,所以我做了一个man stat。似乎stat返回的第9项是“ctime”。在*nix世界中,“ctime”指的是inode数据修改信息。您可能可以通过执行正在执行的操作来测试是否应该修改此字段。您可以手动执行此操作,并对生成的文件运行stat,以确认是否应该更改。您可能选错了os.stat。在

你看到的数字是一个UNIX timestamp,它代表了自1970年1月1日以来的秒数。可以使用^{}将其转换为python datetime对象,例如:

>>> import datetime
>>> datetime.datetime.fromtimestamp(1348167977)
datetime.datetime(2012, 9, 20, 21, 6, 17)

请注意,os.stat()返回一个命名元组;您也可以通过名称访问该元组上的属性:

^{pr2}$

请参阅^{} documentation以获取可用的所有属性。在

另一方面,您访问了st_ctime值;python元组和列表索引从0开始,因此9th元素是索引8。您访问了索引10,即文件的创建时间。在

如果您只需要文件的修改时间,您还可以使用^{}作为方便快捷方式:

>>> os.path.getmtime('test.txt')
1348169795.0
>>> datetime.datetime.fromtimestamp(os.path.getmtime('test.txt'))
datetime.datetime(2012, 9, 20, 21, 36, 35)

复制文件时,它的属性(如上次修改时间戳)通常都包含在内,因此新复制的文件的修改时间可以很容易地更改,包括向后和向前。这同样适用于创建时间。在

相关问题 更多 >