Python - 无法使用ctime获取上次修改时间

时间:2015-02-01 14:55:30

标签: python

我正在学习Python(win8版本2.7.9),目前正在学习各种datetime模块。我无法使用ctime获取文件的上次修改时间。 我正面临这个错误:

AttributeError: type object 'datetime.time' has no attribute 'ctime'

以下是我的导入:

import os
from os import path
from datetime import date,time, timedelta
from datetime import datetime

脚本:

modTime = time.ctime(os.path.getmtime("t.txt"))
print "t.txt was last modified at: " + modTime # This Doesn't work 

print datetime.fromtimestamp(path.getmtime("t.txt")) # This works

4 个答案:

答案 0 :(得分:4)

其他答案是正确的,但是他们没有给出关于如何使用进口的好建议,即不使用'来自'而是根据PEP8使用完全限定名称:

  

要好得多:

     
      
  • 通过其模块引用名称(完全限定标识符),
  •   
  • 使用较短的名称(别名;推荐)
  • 导入长模块   
  • 或明确导入您需要的名称。
  •   

我遵循#1或#2,而不是#3,因为您的程序无法正常工作:

import os
import time

modTime = time.ctime(os.path.getmtime("t.txt"))
print "t.txt was last modified at: " + modTime # This works now! 

#2的一个例子是:

import time
from datetime import time as dt_time

所以time.表示来自time模块的内容,dt_time是函数datetime.time(),并且名称含糊不清。

毫无疑问,人们会因为过于迂腐而不同意这一点,但它确实能让你摆脱进口麻烦。

答案 1 :(得分:3)

错误消息非常清楚:datetime.time has no attribute 'ctime'。但time模块具有函数ctime。您正在通过time行隐藏from datetime import time模块。

>>> import time
>>> time  # refers to the *module*
<module 'time' from '/usr/lib/python2.7/lib-dynload/time.so'>
>>> time.ctime()
'Sun Feb  1 16:23:33 2015'
>>> from datetime import time
>>> time  # now we have a class of that name
<type 'datetime.time'>
>>> t = time()
>>> t.isoformat()
'00:00:00'

答案 2 :(得分:2)

以下是您更正的导入内容:

import os
from os import path
import time
from datetime import datetime

答案 3 :(得分:0)

实际上我尝试使用3.5版并观看了关于youtube上时间模块的教程,其中讲师使用2.7也许。代码是:

from datetime import datetime, time, timedelta
c = time.ctime(os.path.getmtime("file"))
print(c)

但实际上我收到了上面的错误帖子,正确的代码是:

import time
c = time.ctime(os.path.getmtime("file"))

因为在python3.5中,时间是一个单独的模块而不是在日期时间模块中。这里是时间模块源代码的片段。 actually a build-in module