我正在尝试编写一个打开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
,然后运行该文件,但它无效。
答案 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\"'")