我想通過Python的子進程運行一個命令,但它不會正常運行。如果我鍵入到外殼:Python子進程:命令在Python中失敗,但在shell中工作
pack < packfile.dat
其中pack
是我的軟件和packfile
是輸入文件,則該軟件運行良好。
如果我試試這個在python:
import subprocess as sp
import shlex
cmd = 'pack < packfile.dat'.split()
p = sp.Popen(cmd)
軟件抱怨:
Pack must be run with: pack < inputfile.inp
Reading input file... (Control-C aborts)
,它掛在那兒。
最後一部分是針對我的軟件的,但事實是運行相同命令的兩種方法會產生不同的結果,但情況並非如此。
誰能告訴我我做錯了什麼?
其實,我打算做最後:
p = sp.Popen(cmd,stdout=sp.PIPE,stderr=sp.PIPE)
stdout, stderr = p.communicate()
因爲我有點新本,這是不是最好的做法,請讓我知道。
在此先感謝。
謝謝! (提供答案和解釋) – Tetsuo