我的代码如下所示:
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语句之前。但是我发现如果函数调用没有放在方法的末尾,那么这个函数调用将挂起(例如,我没有看到任何超过返回提示的内容)。如果我运行如上所示的方法,我将只获得1个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
为什么我会看到这个?为什么时间不多于一次?我需要做出哪些更改才能继续查看print语句?
答案 0 :(得分:1)
因为您没有导入时间模块:
import subprocess
import time
...
#rest of your code
编辑:
您看到打印"Loading mWorker... please wait"
消息的事实并不意味着它正在发挥作用。 Python将执行命令,在这种情况下,它知道如何打印,但time
未定义,因此它将打印然后在time.sleep(2)
上死亡。
你可以向自己证明,反转这两个陈述,你甚至不会再看到印刷品了。
答案 1 :(得分:0)
您尚未导入时间模块。