python 下執行wget傳入參數

參考:http://muchong.com/html/201310/6477291.html

參考:python中執行shell命令的4種方式  http://jingyan.baidu.com/article/fdffd1f85cce4cf3e88ca170.html


最近遇到一個問題,使用爬蟲爬取視頻地址和url存入文件,之後想用python通過wget來下載視頻到本地

決定使用subprocess方法調用shell

python讀取視頻名存入name變量,讀取視頻地址存入url變量

cmd = 'wget -O name url'

因爲該命令需要放在引號中,所以'name'與‘url’被直接使用,不能夠獲取正確的變量值

使用shell不可行:wget - O $name $url

所以修改

cmd='wget -O %s %s' % (name,url)

----------------------------------------

import subprocess

name='功夫熊貓.mp4'

url='http://www.abcdefg.com'

cmd='wget -O %s %s' % (name,url)

subprocess.call(cmd,shell=True)

----------------------------------------------------------------------------------------------------------------------------------------------

python中執行shell命令的4種方式

Python經常被稱作“膠水語言”,因爲它能夠輕易地操作其他程序,輕易地包裝使用其他語言編寫的庫。今天我們就講解其中的一個方面,用Python調用Shell命令。用Python調用Shell命令有如下幾種方式:

工具/原料

  • Python環境

方法/步驟

  1. os.system("The command you want"). 這個調用相當直接,且是同步進行的,程序需要阻塞並等待返回。返回值是依賴於系統的,直接返回系統的調用返回值,所以windows和linux是不一樣的

  2. os.popen(command[,mode[,bufsize]]),圖中是一個例子. 可以看出,popen方法通過p.read()獲取終端輸出,而且popen需要關閉close().當執行成功時,close()不返回任何值,失敗時,close()返回系統返回值. 可見它獲取返回值的方式和os.system不同。


  3. 使用commands模塊,圖中是一組例子。根據你需要的不同,commands模塊有三個方法可供選擇。getstatusoutput, getoutput, getstatus。


  4. 但是,如上三個方法都不是Python推薦的方法,而且在Python3中其中兩個已經消失。Python文檔中目前全力推薦第四個方法,subprocess! subprocess使用起來同樣簡單:


  5. 直接調用命令,返回值即是系統返回。shell=True表示命令最終在shell中運行。Python文檔中出於安全考慮,不建議使用shell=True。建議使用Python庫來代替shell命令,或使用pipe的一些功能做一些轉義。官方的出發點是好的,不過真心麻煩了很多, so....   如果你更關注命令的終端輸出,可以如下圖這樣操作, 同樣很簡單.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章