2015-04-26 48 views
1

我正在使用終端在quicktime播放器7中成功打開文件,但似乎無法使用python執行相同的操作。 所以這是從終端工作:python - 在應用程序中打開文件

open -a "Quicktime Player 7" /Users/Me/Movies/test.mov 

但這不是在Python 2.7的工作,它會打開QuickTime的,但不是文件:

command = ('open -a "Quicktime Player 7"', 'Users/Me/Movies/test.mov') 
subprocess.Popen(command, shell=True) 

我在做什麼錯?

回答

1

如果傳遞commandlist/tuple,你必須正確地分割參數賦值:

command = ('open', '-a', 'Quicktime Player 7', '/Users/Me/Movies/test.mov') 
subprocess.Popen(command, shell=True) 

然後,我想你也應該能夠放下shell=True參數。此外,你可以看看subprocess.call()subprocess.check_call()(前者返回程序的返回值,後者拋出一個異常,如果返回值指示錯誤):

subprocess.check_call(['open', '-a', 'Quicktime Player 7', '/Users/Me/Movies/test.mov']) 

NB:編碼風格的,明智的,command通常以列表形式傳遞,正如我在上面鏈接的文檔中所看到的。

編輯:在兩條路徑的開始處添加'/'以使其工作。

+0

第一個建議什麼都不做,只是運行魔杖沒有任何反應,subprocess.check_call給出了返回的非零退出狀態1. – speedyrazor

+0

你正在運行哪個操作系統? –

+0

subprocess.check_call現在可以工作,我必須在文件路徑的開頭添加一個/。 – speedyrazor

相關問題