2014-04-03 103 views
-1

有沒有一種方法可以在Python中使用完整的wget命令?如何在Python中實現完整的wget命令

我知道我們可以做到這一點:os.system('wget %s' %%url)

但我想所有保存到一個目錄中的數據的一個完整的命令: wget -r --accept "*.exe,*.dll,*.zip,*.msi,*.rar,*.iso" ftp://ftp.apple.asimov.com/ -P e:\e

+3

恐怕我沒有關注。你知道如何將一個參數傳遞給'wget',但你不知道如何傳遞六個參數? –

+0

'os.system'接受一個字符串作爲參數。您可以使用普通字符串方法構建字符串的其餘部分,就像使用''wget'+ url'一樣。 –

回答

0

沒有爲該subprocess模塊(這是什麼os.system調用但具有更多的靈活性)。具體地講,您可以使用call功能通過以下方式來執行任何命令

import subprocess 
subprocess.call(r'wget -r --accept "*.exe,*.dll,*.zip,*.msi,*.rar,*.iso" ftp://ftp.apple.asimov.com/ -P e:\e', shell=True) 

或者,您可以通過單獨的參數作爲一個列表省略外殼標誌:

subprocess.call(['wget', '-r', ...]) 

同時檢查返回值對於錯誤。有關詳細信息,請參見standard library documentation on subprocess

+0

有沒有辦法刺激進度條?那顯示下載過程? – user1067332

+0

當然,因爲wget可以做到這一點,你只需要將其輸出輸出到控制檯。查看調用函數的stdout參數。 – aepsil0n

+0

只需輸入像wget這樣的命令的stderr/stdout可能不會很好。使用pexpect/wexpect模塊可以獲得更好的結果。看到這個答案:http://stackoverflow.com/a/1283066/2073595 – dano