似乎无法在Python中的相同脚本中使用导入时间和导入日期时间

use*_*061 9 python time datetime sleep

我在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)
Run Code Online (Sandbox Code Playgroud)

错误:

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
Run Code Online (Sandbox Code Playgroud)

我没有错误,但也没有睡眠延迟.

接下来我尝试了:

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
Run Code Online (Sandbox Code Playgroud)

错误:

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
Run Code Online (Sandbox Code Playgroud)

错误

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
Run Code Online (Sandbox Code Playgroud)

错误:

checktime = datetime.today() - timedelta(days=int(2)) AttributeError: 'module' object has no attribute 'today'

所以我不确定如何让两个模块很好地发挥.或者我需要另一种方法来延迟脚本.

建议?或指出我犯的错误?

谢谢.

小智 17

您可以在导入时使用as.

import time as t
from datetime import datetime
...
t.sleep(2)
Run Code Online (Sandbox Code Playgroud)

  • 这是最简单,最好,最简单的解决方案. (2认同)

Sve*_*ach 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
Run Code Online (Sandbox Code Playgroud)

使用时导入模块时import <modulename>,您当然需要为这些模块中的所有名称使用完全限定名称


Mar*_*som 3

切勿使用表单的导入,from x import *因为您不知道会得到什么。在这种情况下,第二次导入会清除第一次导入中的一些符号,因为它们具有相同的名称。

使用import x和限定您在该模块中使用的所有内容x.y,或者仅使用 导入选定的项目from x import y