2012-10-12 41 views
3

目前我從使用Python以下方法運行bash命令:Python的 - 打開新的shell,然後運行命令

os.system(cmd) 

不過,我需要在一個新的shell /終端運行命令。有誰知道如何做到這一點?

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

「新終端」你的意思是你想讓你的窗口管理器創建一個新的終端窗口,其中的命令運行? – geoffspear

回答

1

os.system()是贊成不贊成

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 
+0

這實際上是做一個新的分離過程或只是一個子殼? bcs子殼可能與文件handes有衝突。即使用os.system()是壞的,因爲這是一個子shell – AimForClarity

6

我使用下面的方法(這也將stderr重定向到stdout):

感謝, 丹

0

的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()是你所需要的,也有許多不同的方式來運行。隱藏的窗口,新的窗口,全屏幕,最小化,等等。

相關問題