Python时间函数
我的代码如下所示:Python时间函数,python,subprocess,Python,Subprocess,我的代码如下所示: import subprocess def run_command(command): p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) while p.poll() is None
import subprocess
def run_command(command):
p = subprocess.Popen(command, shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
while p.poll() is None:
print "Loading mWorker... please wait"
time.sleep(2)
return p.communicate()
我最初认为p.communicate()应该在while语句之前。但是,我发现如果这个函数调用没有放在方法的末尾,它将挂起(例如,我没有看到任何超出返回提示的内容)。如果我像上面所示运行这个方法,我只会得到一个print语句,然后
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "python.py", line 10, in run_command
time.sleep(2)
NameError: global name 'time' is not defined
回溯(最近一次呼叫最后一次):
文件“”,第1行,是否在中?
文件“python.py”,第10行,在run_命令中
时间。睡眠(2)
NameError:未定义全局名称“时间”
为什么我会看到这个?为什么时间不能工作不止一次?我需要做哪些更改才能继续查看打印语句?您没有导入时间模块。因为您没有导入时间模块:
import subprocess
import time
...
#rest of your code
编辑:
您曾经看到打印“Loading mWorker…please wait”
消息并不意味着它正在工作。Python将执行命令,在这种情况下,它知道如何打印,但是time
未定义,因此它将打印,然后在时间停止。sleep(2)
你可以向自己证明这一点,把这两种说法颠倒过来,你就再也看不到印刷品了。时间一次也不起作用。。。你打印这些东西,然后用
time.sleep
,但是python不知道time
是什么,因为你从来没有导入过它。好吧,这很有意义,mglison。非常感谢。该代码在导入时间
时中断。在时放下<代码>p.通信()
跟着就够了。