Python时间函数

时间:2013-01-22 13:34:24

标签: 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:
                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语句?

2 个答案:

答案 0 :(得分:1)

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

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

编辑:

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

答案 1 :(得分:0)

您尚未导入时间模块。