我有一些python代碼,我想從中調用另一個程序。這一計劃將Python - 無法調用系統命令
- 打印一些輸出
STDOUT
- 將文件寫入到磁盤
使用call
我碰到下面的行爲;
from subprocess import call
call(['./tango_x86_64_release', 'VTS1 ct="N" nt="N" ph="7.2" te="303" io="0.02" seq="MKHPYEEFPTGSKSPYNMSRGAHPGAV"'])
34, File not properly written, try writing it up again,
1
這種情況不管,如果參數被分成列表與否;
call(['./tango_x86_64_release', 'VTS1', 'ct="N"', 'nt="N"', 'ph="7.2"', 'te="303"', 'io="0.02"', 'seq="MKHPYEEFPTGSKSPYNMSRGAHPGAV"'])
34, File not properly written, try writing it up again,
1
我可以從我的終端
./tango_x86_64_release VTS1 ct="N" nt="N" ph="7.2" te="303" io="0.02" seq="MKHPYEEFPTGSKSPYNMSRGAHPGAV"
其中一期工程,並給出了0
好像其寫入磁盤,這是造成問題的退出狀態調用此相同的命令,如果我中斷了命令,那麼我會得到相應的警告消息(即刪除一個參數,它會警告我缺少該參數)。
使用subprocess.Popen()
給出OSError
;
import subprocess as sub
output = sub.Popen('./tango_x86_64_release VTS1 ct="N" nt="N" ph="7.2" te="303" io="0.02" seq="MKHPYEEFPTGSKSPYNMSRGAHPGAV"', stdout=sub.PIPE, stderr=sub.PIPE)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
任何幫助,不勝感激
嘗試'殼= TRUE'添加到'Popen'電話。 – alecxe
似乎很難在您的環境之外重現。試圖創建一個小的,可複製的用例可能會給你答案([橡皮鴨調試](http://en.wikipedia.org/wiki/Rubber_duck_debugging)) –
@alecxe - 你是我的英雄。砰的錢(張貼它作爲一個答案 - 我不能相信這一切花了!!) – Alex