2014-01-15 33 views
0

我想在Ubuntu 13.10中從Python 3.3啓動.sh腳本。 該腳本應該關閉計算機。我已經通過終端將sh腳本標記爲可執行文件。我嘗試通過以下方式運行sh腳本:os.system(「script.sh」),subprocess.Popen(「Script.sh」)和subprocess.call([script.sh])。 他們不斷返回:OSError Exec格式錯誤。 任何幫助將大大appriciated!如何從python程序運行.sh文件Ubuntu

+0

您是否在腳本中添加了shebang?否則操作系統會嘗試將其作爲二進制可執行文件運行。 – Kritzefitz

+0

嘿。 'shebang'是什麼意思?我能夠從終端運行腳本,但不能從python運行。 –

+0

對於類Unix系統腳本(不是二進制代碼的可執行文件)需要有一個信息應該如何執行。所以.sh腳本的第一行必須是所謂的shebang。 shebang的形式是「#!/ your/script/interpreter」(不帶引號)。對於sh腳本/ your/script/interpreter是/ bin/sh。關於shebang的詳細說明請參見https:// en。 wikipedia.org/wiki/Shebang_%28Unix%29。 – Kritzefitz

回答

1

我認爲script.sh不在您的PATH中,而是在您當前的工作目錄中。 默認情況下,os.system和subprocess會在您的路徑中查找請求的可執行文件。因此,在當前工作目錄執行的東西你需要指定這樣的可執行文件:

subprocess.call("./script.sh") 

./簡單地說,應該執行的可執行文件在當前工作目錄。