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類(lèi)和一些方法,用以進(jìn)行客戶(hù)端的ftp編程。我們可用python編寫(xiě)一個(gè)自已的ftp客戶(hù)端程序,用于下載文件或鏡像站點(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) #打開(kāi)調(diào)試級(jí)別2,顯示詳細(xì)信息 ftp.connect('**IP**') #連接ftp服務(wù)器 ftp.login(user,password) #輸入用戶(hù)名和密碼 print ftp.getwelcome() #顯示ftp服務(wù)器的歡迎信息 ftp.cwd(path) #選擇操作目錄 bufsize = 1024 #設(shè)置緩沖區(qū)大小 file_handler = open(file,'wb').write #以寫(xiě)模式在本地打開(kāi)文件 strBuffer = 'RETR ' + file ftp.retrbinary(strBuffer,file_handler,bufsize) #接收服務(wù)器上文件并寫(xiě)入本地文件 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)
上傳文件非常類(lèi)似,對(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') #讀方式打開(kāi)上傳文件 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í)間,我想的感覺(jué)是比較笨的計(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') #開(kāi)始下載,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)文章
Python3中str、bytes、bytearray轉(zhuǎn)化
本文主要介紹了Python3中str、bytes、bytearray轉(zhuǎn)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04pytorch預(yù)測(cè)之解決多次預(yù)測(cè)結(jié)果不一致問(wèn)題
這篇文章主要介紹了pytorch多次預(yù)測(cè)結(jié)果不一致的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06解決windows下python3使用multiprocessing.Pool出現(xiàn)的問(wèn)題
這篇文章主要介紹了解決windows下python3使用multiprocessing.Pool出現(xiàn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04