本文實例講述了python網絡編程之文件下載實現方法。分享給大家供大家參考。具體如下:
真是越看越喜歡python啊,想要了解它提供的http和ftp下載功能,原來是如此的簡單。
1、相應模塊
ftplib模塊定義了FTP類和一些方法,用以進行客戶端的ftp編程。我們可用python編寫一個自已的ftp客戶端程序,用於下載文件或鏡像站點。如果想了解ftp協議的詳細內容,請參考RFC959或是查看python幫助吧。
Urllib模塊提供了非常高級的接口來從網絡上抓取數據,主要使用到的是urlopen函數,跟open函數功能比較相似,這裡我們要用到urlretrieve()函數來實現從http服務器上下載文件。
2、實例實現FTP下載和上傳
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 from ftplib import FTP import sys def ftpdownload(path,file): ftp = FTP() ftp.set_debuglevel(2) #打開調試級別2,顯示詳細信息 ftp.connect('**IP**') #連接ftp服務器 ftp.login(user,password) #輸入用戶名和密碼 print ftp.getwelcome() #顯示ftp服務器的歡迎信息 ftp.cwd(path) #選擇操作目錄 bufsize = 1024 #設置緩沖區大小 file_handler = open(file,'wb').write #以寫模式在本地打開文件 strBuffer = 'RETR ' + file ftp.retrbinary(strBuffer,file_handler,bufsize) #接收服務器上文件並寫入本地文件 ftp.set_debuglevel(0) #關閉調試 ftp.quit() #退出ftp服務器 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)上傳文件非常類似,對應的上傳函數storbinary。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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、實例實現HTTP下載
http下載真的是超級簡單,一個函數就搞定,這裡通過傳入要下載的地址下載文件,並計算下載時間,我想的感覺是比較笨的計算時間的方法,不知道誰有高招呢?
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 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/')希望本文所述對大家的Python程序設計有所幫助。