1

这个问题用下面的新信息进行了编辑:


我在使用 Cygwin 的 Windows 7 机器上。我同时安装了 Python 2.6 和 3.1。

我可以使用我的简短 python 脚本查看以下内容.. 使用 stat 创建时间、修改时间、访问时间和创建时间。

但是,问题在于.. Windows 7 文件属性将 Created Time 显示为11/12/2010 11:57:54 AM

我的问题是:如何在 python 脚本中返回 Windows 创建时间。

我再说一遍,我不想看到fctime下面脚本中返回的内容。它与 Windows 创建时间不同。

请告知我该怎么做..为什么有区别..请解释一下。

是的..我已经阅读了 os.stat.. 的文档,它说:

st_ctime(取决于平台;Unix 上最近元数据更改的时间,或 Windows 上的创建时间):

$ python /tmp/python/filemodified.py marksix.py
marksix.py
fctime: 11/12/2010 22:58:25
fmtime: 11/12/2010 22:57:01 (windows shows 22:57:01 ok)
fatime: 11/12/2010 22:45:21 (windows shows 22:45:21 ok)
fctimestat: Sat Dec 11 22:58:25 2010 (same as above fctime)
fsize: 1765

与这篇文章相关的一些内容:在 Mac 上使用 Python 获取文件创建时间

这是我的完整脚本:

import sys
import os
import time

for f in sys.argv[1:]:
    if os.path.exists(f):

        fname = f
        fctime = time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(os.path.getctime(fname)))
        fmtime =  time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(os.path.getmtime(fname)))
        fatime =  time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(os.path.getatime(fname)))
        fsize = os.path.getsize(fname)
        #print "size = %0.1f kb" % float(fsize/1000.0)
        fctimestat = time.ctime(os.stat(fname).st_ctime)

        print fname + '\nfctime: ' + fctime + '\nfmtime: ' + fmtime + '\nfatime: ' + fatime + '\n',
        print 'fctimestat: ' + fctimestat + '\n',
        print 'fsize:', fsize,
        print

附加信息:

现在..我在我的工作环境中..所以我不能使用与以前相同的文件..但无论如何,我用cygwin python(2.6.5)和windows python(2.6.6)测试了..结果是不同的..如下所示。

第一个是 cygwin Python .. 第二个是 Windows Python。而且,Windows Python 匹配文件属性......那么,这种差异是否正常......?为什么 cygwin python 应该获得与 Windows 相同的日期集..?

User@COMP /tmp/pythonscr
$ python file_time.py ../testjpg.gif
../testjpg.gif
fctime: 05/01/2011 10:25:52
fmtime: 05/01/2011 10:25:52
fatime: 01/12/2010 17:30:16
fctimestat: Wed Jan  5 10:25:52 2011
fsize: 1536
------


User@COMP /tmp/pythonscr
$ /cygdrive/c/Python26/python.exe file_time.py ../testjpg.gif
../testjpg.gif
fctime: 01/12/2010 17:30:16
fmtime: 05/01/2011 10:25:52
fatime: 01/12/2010 17:30:16
fctimestat: Wed Dec 01 17:30:16 2010
fsize: 1536
------
4

1 回答 1

1

我试图在家里再次这样做..在同一个文件上使用 1)cygwin python 2.6 和 2)windows python 3.1 ..并同时使用 ntpath 和 os.path

结论是.. windows python 3.1 结果与 Windows 属性匹配 3 次。

对于 cygwin python,创建的时间与 windows 属性不匹配.. 同时使用 ntpath 和 os.path ...其他的都可以并且匹配。

结果如下:

Cygwin Python 2.6.5 结果

操作系统路径

>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(os.path.getctime(fname)))
'11/12/2010 22:58:25'
>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(os.path.getmtime(fname)))
'11/12/2010 22:57:01'
>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(os.path.getatime(fname)))
'11/12/2010 22:45:21'

ntpath

>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(ntpath.getctime(fname)))
'11/12/2010 22:58:25'
>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(ntpath.getmtime(fname)))
'11/12/2010 22:57:01'
>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(ntpath.getatime(fname)))
'11/12/2010 22:45:21'

Windows Python 3.1 结果

操作系统路径

>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(os.path.getctime(fname)))
'11/12/2010 11:57:54'
>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(os.path.getmtime(fname)))
'11/12/2010 22:57:01'
>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(os.path.getatime(fname)))
'11/12/2010 22:45:21'

ntpath

>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(ntpath.getctime(fname)))
'11/12/2010 11:57:54'
>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(ntpath.getmtime(fname)))
'11/12/2010 22:57:01'
>>> time.strftime("%d/%m/%Y %H:%M:%S",time.localtime(ntpath.getatime(fname)))
'11/12/2010 22:45:21'
于 2011-01-05T14:09:56.853 回答