Python中的时间戳

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(

我在一个目录下有一堆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(".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)上是创建时间(有关详细信息,请参阅平台文档)