“在Python 3中调用gnome-terminal子进程时,无法执行子进程(没有这样的文件或目录)”

时间:2017-11-07 19:59:12

标签: python subprocess child-process gnome-terminal

我正在尝试编写一个打开gnome-terminal窗口并在其中执行python文件的程序。

当我使用子进程模块调用gnome-terminal子进程时:

import subprocess
subprocess.call(['gnome-terminal', '-x', 'python3 '+filename])

我收到以下错误:

Failed to execute child process "python3 /home/user/Documents/test.py” (No such file or directory)

我首先尝试cd到目录/home/user/Documents/test.py,然后运行该文件,但它无效。

4 个答案:

答案 0 :(得分:0)

我相信你需要将你的文件名作为数组中的另一个元素传递。我没有gnome-terminal,但我用普通的sh复制了你的问题。

import subprocess
subprocess.call(['gnome-terminal', '-x', 'python3', filename])

答案 1 :(得分:0)

您正在尝试执行文字命令python3 /home/user/Documents/test.py,该命令显然在您的系统上不存在。

在外壳中键入该行时,外壳会将其分割为空格,最后它将以python3作为参数调用/home/user/Documents/test.py

使用subprocess.call时,您必须自己进行拆分。

答案 2 :(得分:-1)

试试这个(我假设python3在PATH中设置)

from subprocess import Popen

command="gnome-terminal -x python3"+filename

proc=Popen(command)

如果这不起作用 然后尝试先运行你的python文件,看看它是否有效

python filename 

答案 3 :(得分:-1)

试试这个:

from os import system
system("gnome-terminal -e 'bash -c \"python3 %s\"'"%filename)

您还可以使用分号添加其他参数,例如sleep

system("gnome-terminal -e 'bash -c \"python3 %s; sleep 5\"'")