給你一段代碼吧。
10年積累的做網站、網站制作經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先做網站設計后付款的網站建設流程,更有阜城免費網站建設讓你可以放心的選擇與我們合作。
import?socket
socket.setdefaulttimeout(5.0)
import?urllib
urllib.urlretrieve(url,filename)
通過socket類設置全局的超時。
拼裝后作為參數:
cmd = 'RETR ' + name()
frp.retrbinary(cmd, file_handel, bufsize)
知道文件的url地址就用urllib模塊的urlretrieve函數。urllib.urlretrieve(url,
filename)filename是要保存到本地的文件名。函數后面還有2個可選參數,要用就看幫助文檔吧。多線下載的話,每一線程要指定下載服務器上文件的哪一塊。http協議中head里可以指定Range。下面用的是urllib2模塊request
=
urllib2.Request(url)request.add_header("Range",
"bytes=%d-%d"%(1024,
204)
#指定下載文件的范圍opener
=
urllib2.build_opener()data
=
opener.open(request).read()現在data里面就是文件的1024字節到2048字節的內容。
鏈接:
提取碼:dfsm
Python 編程高手之路。本課程分五個階段,詳細的為您打造高手之路,本課程適合有一定python基礎的同學。
用Python可以做什么?可以做日常任務,比如自動備份你的MP3;可以做網站,很多著名的網站就是Python寫的。總之就是能干很多很多事。
課程目錄:
第一階段
第一章:用戶交互
第二章:流程控制
第三章:數據類型
第四章:字符編碼
第五章:文件處理
第二階段
第六章:函數概述
第七章:閉包函數
......
可以使用多進程或多線程并發下載。其實你的方法已經是多進程的一種了。
python中有多進程模塊multiprocessing和多線程multithreading。
思路是這樣,將需要下載的連接送入隊列,然后各個進程(或線程)從隊列里拿任務然后下載。前面的兩個類庫都提供進程、線程安全的隊列。
樓下給了個多線程的示例,這里我給一個稍微復雜點的進程的示例。其實線程和進程庫的接口基本是一致的。
#!/usr/bin/env?python
#?encoding=utf-8
#?test.py
from?multiprocessing?import?Queue,?Process
from?Queue?import?Empty
import?urllib
import?time
urls?=?[line.strip()?for?line?in?open('urls.txt')]
queue?=?Queue(1024)
for?url?in?urls:
queue.put(url)
def?download():
while?True:
try:
url?=?queue.get()
f?=?urllib.urlopen(url)
r?=?f.read()
#?這里保存你下載的文件
except?Empty:
time.sleep(5)
except?Exception,?e:
print?'download?error:?%s'?%?e
for?i?in?range(10):
p?=?Process(target=download)
p.start()
p.join()
使用方法:編輯一個文件urls.txt,每行一個url。然后:
nohup?./test.py?
結束進程則需要找到它的進程號,然后kill -9
望采納,謝謝支持!
本文名稱:python編寫下載函數,python下載命令
網站路徑:http://vcdvsql.cn/article30/hshhso.html
成都網站建設公司_創新互聯,為您提供云服務器、網站排名、域名注冊、建站公司、品牌網站設計、網站維護
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯