我在Windows上使用Python 2.7,我正在编写一个使用时间和日期时间模块的脚本。我以前做过这个,但是python似乎对于加载两个模块以及之前使用过的方法似乎并不敏感。以下是我使用的不同语法以及我目前遇到的错误。
首先我尝试了:
from datetime import *
from time import *
...
checktime = datetime.today() - timedelta(days=int(2))
checktime = checktime.timetuple()
...
filetimesecs = os.path.getmtime(webgatelogdir + '/' + fn)
file = webgatelogdir + '/' + fn
filetime = localtime(filetimesecs)
...
else: time.sleep(60)
ERROR:
else: time.sleep(60) AttributeError: 'builtin_function_or_method' object has no attribute 'sleep'
然后我尝试了:
from datetime import *
from time import *
...
checktime = datetime.today() - timedelta(days=int(2))
checktime = checktime.timetuple()
...
filetimesecs = os.path.getmtime(webgatelogdir + '/' + fn)
file = webgatelogdir + '/' + fn
filetime = localtime(filetimesecs)
...
#else: time.sleep(60) # comment out time.sleep statement
我没有错误,但也没有睡眠延迟。
接下来我尝试了:
from datetime import *
import time
...
checktime = datetime.today() - timedelta(days=int(2))
checktime = checktime.timetuple()
...
filetimesecs = os.path.getmtime(webgatelogdir + '/' + fn)
file = webgatelogdir + '/' + fn
filetime = localtime(filetimesecs)
...
#else: time.sleep(60) # comment out time.sleep statement
ERROR:
filetime = localtime(filetimesecs) NameError: name 'localtime' is not defined
另一个修改,我尝试了这个:
import time
import datetime
...
checktime = datetime.today() - timedelta(days=int(2))
checktime = checktime.timetuple()
...
filetimesecs = os.path.getmtime(webgatelogdir + '/' + fn)
file = webgatelogdir + '/' + fn
filetime = localtime(filetimesecs)
...
#else: time.sleep(60) # comment out time.sleep statement
ERROR
checktime = datetime.today() - timedelta(days=int(2)) AttributeError: 'module' object has no attribute 'today'
最后,我尝试了这个:
import time
from datetime import *
...
checktime = datetime.today() - timedelta(days=int(2))
checktime = checktime.timetuple()
...
filetimesecs = os.path.getmtime(webgatelogdir + '/' + fn)
file = webgatelogdir + '/' + fn
filetime = localtime(filetimesecs)
...
#else: time.sleep(60) # comment out time.sleep statement
ERROR:
checktime = datetime.today() - timedelta(days=int(2))
AttributeError: 'module' object has no attribute 'today'
所以我不确定如何让这两个模块很好地发挥。或者我需要另一种方法来延迟脚本。
连连呢?或指出我犯的错误?
感谢。
答案 0 :(得分:15)
您可以在导入时间时使用作为。
import time as t
from datetime import datetime
...
t.sleep(2)
答案 1 :(得分:9)
不要使用from ... import *
- 这是交互式使用的便捷语法,会导致脚本混乱。
下面'应该有效的版本:
import time
import datetime
...
checktime = datetime.datetime.today() - datetime.timedelta(days=int(2))
checktime = checktime.timetuple()
...
filetimesecs = os.path.getmtime(webgatelogdir + '/' + fn)
file = webgatelogdir + '/' + fn
filetime = time.localtime(filetimesecs)
...
#else: time.sleep(60) # comment out time.sleep statement
使用import <modulename>
导入模块时,您当然需要为这些模块中的所有名称使用完全限定名称
答案 2 :(得分:3)
我猜你的from something import *
会产生冲突。
由于datetime
导出time
类,因此可能与time
模块冲突。
结论:不要使用import *
; - )
答案 3 :(得分:2)
永远不要使用from x import *
形式的导入,因为您不知道自己会得到什么。在这种情况下,第二个导入是从第一个导入中删除一些符号,因为它们具有相同的名称。
使用import x
并使用x.y
限定您在该模块中使用的所有内容,或仅使用from x import y
导入所选项目。
答案 4 :(得分:2)
这两个模块用sasme名称定义了一些函数/类型。最好的方法是明确导入它们并使用您需要的东西:
import datetime
import time
datetime.datetime.today() # Datetime object for today
time.time() # Current time
更一般地说,您不能期望盲目地在from x import *
和import x
之间切换。您需要查看每个库的文档以确定要使用的函数。
答案 5 :(得分:1)
进行导入时可能会出现名称冲突*。我强烈建议不要这样做。
import time
import datetime
.
.
.
.
time.sleep(60)
如果您不希望使用time.
或datetime.
from datetime import X, Y
from time import Z, W
X.something()
... etc ...
答案 6 :(得分:0)
正如以上评论中每个人正确提到的那样,此问题是由于:
from datetime import *
但是我遇到了一个问题,我将其写到文件中并尝试运行,并且由于无法正常工作,我从该文件中删除了整个导入语句,但是当我再次尝试运行它时,它仍然陷入困境错误。令人惊讶的是,当一条语句根本不在文件中时,它将如何导致错误? 但是经过一些调试后,我意识到同一条语句位于其他相互依赖的文件中,因此也出现了错误。
因此,我想说的是,如果错误仍然存在,请检查项目中的所有文件是否存在此语句,然后将其替换为要导入的特定模块,例如:
from datetime import datetime, timedelta
希望这会有所帮助!
答案 7 :(得分:-2)
from datetime import *
from time import *