我必須在Ubuntu中調用一個可執行文件......剛剛學會了如何在Windows中使用subprocess.Popen
來完成這項工作。現在,我需要在Ubuntu中重複這一步。調用一個子進程
我已經使用了下面的Python命令:
a=subprocess.Popen("filename.exe",shell=0)
回報是
Traceback (most recent call last):
File "/untitled0.py", line 29, in <module>
a=subprocess.Popen("filename.exe",shell=0)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 8] Exec format error
如果我改變shell=1
,有沒有投訴,但沒有輸出文件要麼產生。
我已經檢查此文件的使用file filename.exe
它返回的類型:
文件名.exe:ELF 64位LSB的可執行文件,X86-64,版本1(SYSV) 動態鏈接(使用共享庫),爲GNU/Linux 2.6.9,不 剝離
所以是有可能在Ubuntu使用subprocess.Popen
稱呼它?
你試圖在32位主機上運行64位二進制文件嗎?你可以顯示'uname -a'的輸出嗎? –
這看起來像我的Ubuntu是32位,這可能會導致我的問題..我可以知道什麼是uname -a? –
這是一個打印有關主機信息的命令,包括操作系統,主機名,內核版本,內核編譯時間和體系結構(從中可以知道它是否是a)。在我的32位筆記本電腦上,它打印出「Linux redance 2.6.26-2-686#1 SMP Thu Jan 27 00:28:05 UTC 2011 i686 GNU/Linux',而在我的64位服務器上打印'Linux red 2.6。 32-5-amd64#1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64 GNU/Linux'。 –