Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在新终端中用python运行linux终端命令_Python_Linux_Subprocess - Fatal编程技术网

如何在新终端中用python运行linux终端命令

如何在新终端中用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

关于如何使用python中的子流程模块运行Linuxshell命令,我阅读了多个答案。在我的例子中,我需要在python代码中运行Linuxshell命令,这样这些命令应该在新的终端中执行

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' ")