从python启动新shell窗口中的程序

时间:2011-09-11 16:22:19

标签: python subprocess

我正在尝试从新的shell窗口中的另一个python脚本启动python脚本。到目前为止我无法做到。有谁知道我怎么能做到这一点?

例如

import subprocess
process = subprocess.Popen('test.py', shell=True, stdout=subprocess.PIPE)
process.wait()
print (process.returncode)

当我运行这个脚本时,它应该在一个新的shell窗口中启动'test.py'。

我正在使用linux,但如果您也可以为Windows提供解决方案,那将非常有用。

2 个答案:

答案 0 :(得分:3)

以下是如何在类似Debian的系统上执行此操作:

import subprocess
import shlex
process = subprocess.Popen(
    shlex.split("""x-terminal-emulator -e 'bash -c "test.py"'"""), stdout=subprocess.PIPE)
process.wait()
print (process.returncode)

类似的东西应该适用于任何* nix系统。

非常感谢eudoxos指出x-terminal-emulator

答案 1 :(得分:1)

启动运行脚本的终端,而不是启动shell。在Linux上,xterm -e test.py; Windows相当于cmd.exe test.py我相信(但我可能错了)。