python如何正确地使用os.system进行子进程调用

python如何正确地使用os.system进行子进程调用,python,shell,Python,Shell,在阅读一些示例后,无法正确理解: os.system("gnome-terminal sh python gateway.py 1 "+ str(line.split(' ')[2])) 如何将其写入子流程?终端表示上述内容已被弃用 subprocess.check_output("python","gateway.py 1 "+str(line.split(' ')[2])) 尝试了上面的这个,但它不起作用。您仍然需要gnome终端和sh;从系统到检查输出,这并没有真正改变。单个参数应该是

在阅读一些示例后,无法正确理解:

os.system("gnome-terminal sh python gateway.py 1 "+ str(line.split(' ')[2]))
如何将其写入子流程?终端表示上述内容已被弃用

subprocess.check_output("python","gateway.py 1 "+str(line.split(' ')[2]))

尝试了上面的这个,但它不起作用。

您仍然需要
gnome终端
sh
;从
系统
检查输出
,这并没有真正改变。单个参数应该是一个列表,其中包含与
os.system
一起使用的预拆分命令行

subprocess.check_output(["gnome-terminal",
                         "sh",
                         "python",
                         "gateway.py",
                         "1",
                         line.split(' ')[2]
                        ])

在命令开始时,您确实不需要
gnome终端sh
。您甚至可以从Python脚本中调用它,这样您就可以导入gateway.py并直接调用相关的方法。@i0b0,这并不能帮助我解决我需要的问题。。。因为我正在做一个等待端口消息的进程,所以这就是为什么我需要在其他终端中打开其他进程。我不理解这句话,但我很难理解为什么
gnome-terminal
sh
有助于等待任何东西。@i0b0 gnome-terminal打开另一个终端,我不能只导入gateway.py,因为这并不能解决我的问题,因为我已经在gateway.py了,我需要打开其他网关(在其他设置if/else中运行),我需要在其他终端中打开这些网关,因为这些进程是python套接字操作符,也在侦听端口,因此,如果您在单个终端/线程上执行此操作,它将继续等待,而不允许其他终端/线程也等待。这并不需要终端或外壳,您所需要做的只是运行多个进程。您可以使用它。然后您可以删除
gnome终端(可能还有
sh
;它似乎没有任何用途)。