打开新的gnome-terminal并运行命令

Joe*_*Joe 5 python python-2.7

我正在尝试编写一个脚本,以打开一个新的终端,然后从该终端运行一个单独的python脚本。

我试过了:

os.system("gnome-terminal 'python f.py'")
Run Code Online (Sandbox Code Playgroud)

p = Popen("/usr/bin/gnome-terminal", stdin=PIPE)
p.communicate("python f.py")
Run Code Online (Sandbox Code Playgroud)

但是这两种方法都只能打开一个新终端,而不能运行f.py。我将如何打开终端并运行单独的脚本?

编辑:我想打开一个新的终端窗口,因为f.py它只是一个正在运行的服务器serve_forever()。我希望原始的终端窗口保持“自由”状态以运行其他命令。

Jea*_*bre 5

与大多数终端一样,gnome 终端需要选项来执行命令:

gnome-terminal [-e, --command=STRING] [-x, --execute]
Run Code Online (Sandbox Code Playgroud)

您可能需要添加-x选项:

x, --执行

在终端内执行命令行的其余部分。

所以:

os.system("gnome-terminal -x python f.py")
Run Code Online (Sandbox Code Playgroud)

&除非您添加到命令行,否则它不会在后台运行您的进程。

communicate尝试需要为您的输入换行,但也应该可以工作,但是像终端这样的复杂进程不“喜欢”被重定向。看起来就像是倒着使用交互工具。再说一次,这会阻塞直到终止。可行的方法是使用p.stdin.write("python f.py\n")python 脚本来进行控制。但在这种情况下,它不太可能起作用。

所以看来你甚至不需要 python 来做你想要的事情。你只需要跑

python f.py &
Run Code Online (Sandbox Code Playgroud)

在一个壳里。