Python - 打开新的 shell 并运行命令

7

目前我正在使用以下方法从Python内部运行bash命令:

os.system(cmd)

然而,我需要在一个新的shell/终端中运行该命令。有人知道如何做吗?

谢谢, 丹


“新终端”是指您希望窗口管理器创建一个新的终端窗口,在其中运行命令吗? - Wooble
3个回答

7
我正在使用以下方法(这也会将stderr重定向到stdout):
import subprocess    
cmd_line = "echo Hello!"
p = subprocess.Popen(cmd_line, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
out = p.communicate()[0]
print out

1

os.system()已被弃用,推荐使用:

import subprocess
print subprocess.check_output("command", shell=True)

这实际上是创建了一个新的独立进程还是只是一个子shell?因为子shell可能会与文件句柄发生冲突。例如,使用os.system()是不好的,因为那是一个子shell。 - AimForClarity

1

Windows "WshShell",搜索一下Google就可以找到答案。我的完整步骤:

安装

1. pip install pywin32-221-cp36-cp36m-win_amd64.whl
2. python.exe pywin32_postinstall.py -install  (DOS command line)

运行
3. import win32com.client
4. WshShell = win32com.client.Dispatch("WScript.Shell")
5. WshShell.run("cmd") 

WshShell.run()是您需要的,有许多不同的运行方式。隐藏窗口、新窗口、全屏、最小化等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接