2012-11-21 96 views
1

可能重複:
How do I execute a program from python? os.system fails due to spaces in path如何在命令行蟒蛇運行程序

我想調用在Python命令行程序(MP3gain.exe)。我的問題是,python在我發送到命令行的命令周圍放置了一個[''],dos似乎無法用該命令解釋命令。這是我的代碼。

import os 
import subprocess 
import Editor 

class normalize(): 
    def __init__(self, file): 
     self.FileName = file 

    def work(self): 
     command = [ 'mp3gain /r /c' + self.FileName] 
     subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 


if __name__ == "__main__": 
    test = normalize("filename.mp3") 
    test.work() 

如果這有幫助,如果我有dos打印退出代碼,它是-2。謝謝你的幫助。

+3

你是什麼意思'python在命令周圍放置['']?你不應該有一個真正的蛇爲你輸入代碼,它只是語言名稱。 –

+0

如果你的命令行應該是'mp3gain/r/c filename.mp3' - 你有沒有試過'command = ['mp3gain','/ r','/ c',self.FileName]'? (也可能需要從解釋器的工作目錄中調用mp3gain)否則,您可能需要調用完整可執行文件的路徑) –

回答

3

command應該是一個字符串列表,以mp3gain作爲第一個,那就是:

command = ['mp3gain', '/r', '/c', self.FileName] 
+0

而'shell'必須是False – jdi

0

您可以通過使用os.system調用程序。 例如在你的程序中,你可以使用:

os.system("mp3gain /r /c " + self.FileName) 
+1

os.system是舊的。建議使用子進程替換運行進程的所有舊方法。 – jdi