如何在新终端中用python运行linux终端命令
关于如何使用python中的子流程模块运行Linuxshell命令,我阅读了多个答案。在我的例子中,我需要在python代码中运行Linuxshell命令,这样这些命令应该在新的终端中执行如何在新终端中用python运行linux终端命令,python,linux,subprocess,Python,Linux,Subprocess,关于如何使用python中的子流程模块运行Linuxshell命令,我阅读了多个答案。在我的例子中,我需要在python代码中运行Linuxshell命令,这样这些命令应该在新的终端中执行 subprocess.call(["df","-h"] 我在基本终端中运行的是xyz.py,当我执行上述命令时,它会覆盖同一终端中xyz.py的输出。我希望该命令在不同的终端中执行,或者我希望将该命令的输出存储在文本文件中 subprocess.call(["df","-h",">","somefi
subprocess.call(["df","-h"]
我在基本终端中运行的是xyz.py,当我执行上述命令时,它会覆盖同一终端中xyz.py的输出。我希望该命令在不同的终端中执行,或者我希望将该命令的输出存储在文本文件中
subprocess.call(["df","-h",">","somefile.txt"])
上面的命令不起作用
编辑-1:
如果我将输出保存在文本文件中,我还必须通过python显示它
谢谢
import subprocess
fp = open("somefile.txt", "w")
subprocess.run(["df", "-h"], stdout=fp)
fp.close
使用文件句柄
如果要在保存时打印输出,请执行以下操作:
import subprocess
cp = subprocess.run(["df", "-h"], stdout=subprocess.PIPE)
print(cp.stdout)
fp = open("somefile.txt", "w")
print(cp.stdout, file=fp)
fp.close()
你试过操作系统了吗
os.system("gnome-terminal -e 'your command'")
以上代码正在运行。如果有任何简单/有效的方法可以做到这一点,那将非常有用 可能是重复的谢谢。问题是,新的航站楼即将开放。但是它无法在新的terminal中执行命令,那么使用os.fork?os.system(“gnome terminal-e'['df','-h']'”)创建一个子项如何呢?这就是我所做的。你有什么建议吗?我认为这很好,但如果你想,你可以尝试创建一个子进程(新进程)。看这个:谢谢。它起作用了。问题是,如果我将其保存在文本文件中,我还必须使用python显示。@spectre您可以使用
stdout=subprocess.PIPE
获取stdout,打印它,然后保存到文件中。即使在运行代码之前,它也会显示“print(cp.out,file=fp)”行的错误。@spectre这是一个打字错误。现在已修复。仍然显示相同的错误。你能检查一下并编辑一下吗。谢谢
file = open("somefile.txt", "w")
subprocess.run(["df","-h"], stdout = file)
os.system("gnome-terminal -e 'gedit somefile.txt' ")