Python中的时间戳
我在一个目录下有一堆xml文件。我正试图从文件中提取一些细节,比如一些标记值及其最后修改的日期和时间。我的剧本是Python中的时间戳,python,timestamp,minidom,Python,Timestamp,Minidom,我在一个目录下有一堆xml文件。我正试图从文件中提取一些细节,比如一些标记值及其最后修改的日期和时间。我的剧本是 from xml.dom.minidom import parse, parseString import os, stat import sys import datetime def shahul(dir): for r,d,f in os.walk(dir): for files in f: if files.endswith(
from xml.dom.minidom import parse, parseString
import os, stat
import sys
import datetime
def shahul(dir):
for r,d,f in os.walk(dir):
for files in f:
if files.endswith(".xml"):
dom=parse(os.path.join(r, files))
info=os.stat(os.path.join(r, files));
atime=info.st_atime;
ctime=info.st_ctime;
mtime=info.st_mtime;
name = dom.getElementsByTagName('rev')
title = dom.getElementsByTagName('title')
approved_by = dom.getElementsByTagName('approved-by')
approved = approved_by[0].attributes['approved'].value
print (files,
datetime.datetime.fromtimestamp(atime),
datetime.datetime.fromtimestamp(ctime),
datetime.datetime.fromtimestamp(mtime),
title[0].firstChild.nodeValue,
name[0].firstChild.nodeValue,
approved, sep='\t')
shahul("location")
一切正常。但是时间是无效的。它显示上次创建时间、修改时间的相同时间。同样是在错误的格式,我不知道为什么它是这样显示。我得到了像这样的输出
XXX.xml 05:49.2 05:49.2 05:49.2 File_name E yes
XXX.xml 22:14.6 22:14.6 22:14.6 File_name F yes
XXX.xml 29:15.5 29:15.5 29:15.5 File_name E yes
XXX.xml 16:02.1 16:02.1 16:02.1 File_name F2 yes
XXX.xml 00:48.0 00:48.0 00:48.0 File_name B1 yes
这似乎不对。如何纠正它?
st\u-ctime
不是创建时间,而是更改时间。您还可能希望使用.isoformat
或类似的方法格式化datetime对象
可能有助于了解atime、ctime和mtime。
datetime.datetime.fromtimestamp()
返回一个datetime.datetime
对象。您需要调用每个函数的strftime()
方法来获得所需的表示形式。然而,我不知道为什么他们的价值观都是一样的。你知道他们三个人中的哪一个吗?你是说这个吗,先生?打印strftime(“%m/%d/%Y%I:%m:%S%p”,time.localtime(os.path.getmtime(files))。我尝试了,但出现了语法错误。我尝试了另一个文件的相同语法。我得到了正确的输出。但在这里我没有得到我的意思是打印(files,time.strftime(fmt,atime),time.strftime(fmt,ctime),…)
,等等——换句话说,根本不要使用datetime.datetime.fromtimestamp()
。谢谢你的评论,ben。我刚刚看了python文档。它说的是“操作系统报告的“ctime”。在某些系统(如Unix)上是最后一次元数据更改的时间,在其他系统(如Windows)上是创建时间(有关详细信息,请参阅平台文档)