2010-12-10 60 views
3

如何在程序结束后执行程序而不会阻塞程序?Python:如何执行外部程序

我曾尝试:

os.system() 

但直到执行程序停止/关闭停止我的程序。有没有办法让我的程序在执行外部程序后继续运行?

回答

2

您可以使用子进程模块,但os.system也可以使用。它通过一个外壳工作,所以你只需要在你的字符串末尾加上'&'。就像在交互式shell中一样,它会在后台运行。

但是,如果您需要从中获取某种输出,您很可能需要使用子流程模块。

1

您可以使用subprocess为:

import subprocess 
import codecs 

# start 'yourexecutable' with some parameters 
# and throw the output away 
with codecs.open(os.devnull, 'wb', encoding='utf8') as devnull: 
    subprocess.check_call(["yourexecutable", 
          "-param", 
          "value"], 
          stdout=devnull, stderr=subprocess.STDOUT 
         )