Python:如何执行外部程序

3

如何在程序内部执行程序而不会阻塞,直到执行的程序完成?

我尝试过:

os.system()

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

4个回答

12

3
除非你明确地等待它。 - Ignacio Vazquez-Abrams
2
os.system 也会生成一个新的进程,而 subprocess 则可以让你更好地控制它。 - Nick Bastin

4

2
你可以使用 subprocess 模块,但是 os.system 也可以工作。它通过一个 shell 运行,所以你只需要在字符串末尾加上 '&'。就像在交互式 shell 中一样,它会在后台运行。
然而,如果你需要从中获取某种输出,那么你很可能需要使用 subprocess 模块。

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
                          )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接