-1

我的代码如下所示:

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 个打印语句,然后

    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

为什么我会看到这个?为什么时间不工作不止一次?我需要进行哪些更改才能继续看到打印声明?

4

2 回答 2

1

因为您没有导入时间模块:

import subprocess
import time
...
#rest of your code

编辑:

您看到打印"Loading mWorker... please wait"消息一次的事实并不意味着它正在工作。Python 将执行涉及到的命令,在这种情况下,它知道如何打印,但time未定义,因此它将打印然后死在time.sleep(2).
你可以证明给自己看,颠倒这两个陈述,你甚至不会再看到印刷品了。

于 2013-01-22T13:36:04.757 回答
0

您尚未导入时间模块。

于 2013-01-22T13:36:00.360 回答