python網(wǎng)絡(luò)編程之文件下載實(shí)例分析
本文實(shí)例講述了python網(wǎng)絡(luò)編程之文件下載實(shí)現(xiàn)方法。分享給大家供大家參考。具體如下:
真是越看越喜歡python啊,想要了解它提供的http和ftp下載功能,原來(lái)是如此的簡(jiǎn)單。
1、相應(yīng)模塊
ftplib模塊定義了FTP類和一些方法,用以進(jìn)行客戶端的ftp編程。我們可用python編寫一個(gè)自已的ftp客戶端程序,用于下載文件或鏡像站點(diǎn)。如果想了解ftp協(xié)議的詳細(xì)內(nèi)容,請(qǐng)參考RFC959或是查看python幫助吧。
Urllib模塊提供了非常高級(jí)的接口來(lái)從網(wǎng)絡(luò)上抓取數(shù)據(jù),主要使用到的是urlopen函數(shù),跟open函數(shù)功能比較相似,這里我們要用到urlretrieve()函數(shù)來(lái)實(shí)現(xiàn)從http服務(wù)器上下載文件。
2、實(shí)例實(shí)現(xiàn)FTP下載和上傳
from ftplib import FTP
import sys
def ftpdownload(path,file):
ftp = FTP()
ftp.set_debuglevel(2)
#打開調(diào)試級(jí)別2,顯示詳細(xì)信息
ftp.connect('**IP**')
#連接ftp服務(wù)器
ftp.login(user,password)
#輸入用戶名和密碼
print ftp.getwelcome()
#顯示ftp服務(wù)器的歡迎信息
ftp.cwd(path)
#選擇操作目錄
bufsize = 1024
#設(shè)置緩沖區(qū)大小
file_handler = open(file,'wb').write
#以寫模式在本地打開文件
strBuffer = 'RETR ' + file
ftp.retrbinary(strBuffer,file_handler,bufsize)
#接收服務(wù)器上文件并寫入本地文件
ftp.set_debuglevel(0) #關(guān)閉調(diào)試
ftp.quit() #退出ftp服務(wù)器
if __name__ == '__main__':
path1 = 'download/test/'
file1 = 'test1.rar'
if len(sys.argv) == 3:
try:
ftpdownload(sys.argv[1],sys.argv[2])
#命令行輸入文件在ftp上的路徑和文件名,
except IOError:
print "please input the correct path and filename"
else:
ftpdownload(path1,file1)
上傳文件非常類似,對(duì)應(yīng)的上傳函數(shù)storbinary。
from ftplib import FTP
import sys,os
def ftpdownload(path,file):
ftp = FTP()
ftp.set_debuglevel(2)
ftp.connect('**IP**')
ftp.login(user,password)
print ftp.getwelcome()
ftp.cwd(path)
bufsize = 1024
file_handler = open(file,'rb')
#讀方式打開上傳文件
strBuffer = 'RETR ' + file
ftp.storbinary(strBuffer,file_handler,bufsize)
#上傳文件
ftp.set_debuglevel(0)
ftp.quit()
if __name__ == '__main__':
path1 = 'download/test/'
file1 = '4.jpg'
if len(sys.argv) == 3:
try:
ftpdownload(sys.argv[1],sys.argv[2])
except IOError:
print "please input the correct path and filename"
else:
ftpdownload(path1,file1)
3、實(shí)例實(shí)現(xiàn)HTTP下載
http下載真的是超級(jí)簡(jiǎn)單,一個(gè)函數(shù)就搞定,這里通過(guò)傳入要下載的地址下載文件,并計(jì)算下載時(shí)間,我想的感覺是比較笨的計(jì)算時(shí)間的方法,不知道誰(shuí)有高招呢?
import urllib
import sys
def download(url):
starttime = datetime.datetime.now()
print 'download start time is %s'% starttime
urllib.urlretrieve(url,'test.exe')
#開始下載,test.exe為下載后保存的文件名
endtime = datetime.datetime.now()
print 'download end time is %s'% endtime
print 'you download the file use time %s s' % (endtime - starttime).seconds
if __name__ == '__main__':
if len(sys.argv) == 2:
try:
download(sys.argv[1])
except IOError:
print 'url not found'
else:
download('http://www.python.org/')
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Matplotlib實(shí)戰(zhàn)之平行坐標(biāo)系繪制詳解
平行坐標(biāo)系是一種統(tǒng)計(jì)圖表,它包含多個(gè)垂直平行的坐標(biāo)軸,每個(gè)軸表示一個(gè)字段,并用刻度標(biāo)明范圍,下面我們就來(lái)看看如何繪制平行坐標(biāo)系吧2023-08-08
Pyqt5實(shí)戰(zhàn)小案例之界面與邏輯分離的小計(jì)算器程序
網(wǎng)上很多PyQt5信號(hào)槽與界面分離的例子,但是真正開發(fā)起來(lái)很不方便,下面這篇文章主要給大家介紹了關(guān)于Pyqt5實(shí)戰(zhàn)小案例之界面與邏輯分離的小計(jì)算器程序,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
Python深度學(xué)習(xí)pyTorch權(quán)重衰減與L2范數(shù)正則化解析
這篇文章主要介紹了Python深度學(xué)習(xí)中的pyTorch權(quán)重衰減與L2范數(shù)正則化的詳細(xì)解析,文中附含詳細(xì)示例代碼,有需要的朋友可以借鑒參考下2021-09-09
如何用python?GUI(tkinter)寫一個(gè)鬧鈴小程序(思路詳解)
這篇文章主要介紹了用python?GUI(tkinter)寫一個(gè)鬧鈴小程序思路詳解,涉及到tkinter一些函數(shù)控件,數(shù)據(jù)的類的封裝,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
Python+Pygame實(shí)戰(zhàn)之實(shí)現(xiàn)小蜜蜂歷險(xiǎn)記游戲
這篇文章主要為大家介紹了如何利用Python中的Pygame模塊實(shí)現(xiàn)小蜜蜂歷險(xiǎn)記游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python游戲開發(fā)有一定幫助,需要的可以參考一下2022-08-08
Python自動(dòng)化運(yùn)維中服務(wù)器性能監(jiān)控與告警詳解
這篇文章主要為大家詳細(xì)介紹了Python自動(dòng)化運(yùn)維中服務(wù)器性能監(jiān)控與告警的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2025-04-04
python飛機(jī)大戰(zhàn)pygame游戲之?dāng)硻C(jī)出場(chǎng)實(shí)現(xiàn)方法詳解
這篇文章主要介紹了python飛機(jī)大戰(zhàn)pygame游戲之?dāng)硻C(jī)出場(chǎng)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Python使用pygame模塊實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲中敵機(jī)出場(chǎng)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-12-12
linux系統(tǒng)下pip升級(jí)報(bào)錯(cuò)的解決方法
這篇文章主要給大家介紹了關(guān)于linux系統(tǒng)下pip升級(jí)報(bào)錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

