我正在学习Python(win8版本2.7.9),目前正在学习各种date
和time
模块。我无法使用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
答案 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)