2015-03-13 52 views
1

我使用subprocess.call像下方的外殼腳本:如何運行置於不同的文件夾中從蟒

subprocess.call([「須藤./order_fc_prioritizer/run.sh」])

但它說沒有這樣的文件或目錄

+0

你能告訴我們你的目錄結構是什麼樣子嗎? – 2015-03-13 12:20:32

回答

1

您可以使用絕對,而不是相對,文件路徑到您的腳本。

0

傳遞一個列表以call()與命令和參數分成單獨的列表元素:

subprocess.call(['sudo', './order_fc_prioritizer/run.sh']) 

參見文檔,部分Frequently Used Arguments

args是所有調用所必需的,並且應該是字符串或程序參數的序列 。提供參數序列通常首選爲 ,因爲它允許模塊處理任何所需的參數轉義和引用(例如允許文件名稱中的空格) 。如果傳遞單個字符串,則任何一個shell都必須爲True(請參見下面的 ),否則字符串必須簡單地命名要執行的程序 而不指定任何參數。

你也可以使用shlex.split()創建參數列表:

import shlex 

subprocess.call(shlex.split('sudo ./order_fc_prioritizer/run.sh')) 
0

您可以考慮使用subprocess.Popen()

基本上subprocess.call()僅僅是一個輔助函數:

proc = subprocess.Popen(cmd, cwd=PATH) 
proc.wait() 

但Popen()有一個關鍵字參數cwd,這是工作總監y在哪裏執行命令(產生進程)。

相關問題