python腳本訪問(wèn)ftp服務(wù)器(2)

實(shí)現(xiàn)了可以訪問(wèn)ftp服務(wù),需要在ftp服務(wù)器上進(jìn)行文件的上傳和下載。
下載測(cè)試
最開(kāi)始因?yàn)榉?wù)器端的帶寬限制,下載的速度在1M/S。提升了帶寬速度后,下載速度提升到15M/S。
用python做速度測(cè)試,起一個(gè)測(cè)速線程進(jìn)行測(cè)試。

def seeFile(localfilename):                                                                                                    
       sizebuff = 0                                                               
       while True:                                                                
           time.sleep(1)                                                          
           size = os.path.getsize(localfilename)                                  
           print size - sizebuff                                                  
           sizebuff = size 

subThread = threading.Thread(target = seeFile, args = ('aaa.txt',))                                                           
subThread.start()

多線程下載
因?yàn)橐婚_(kāi)始的帶寬有限,為了提高速度,在git上找到一個(gè)多線程ftp下載的代碼 git地址 分片下載,最后合并,速度提升還是挺快的, 就是如果線程數(shù)太多,帶寬有限制,會(huì)出現(xiàn)線程執(zhí)行不均勻的情況,需要合理安排線程數(shù)量。

下載完成后,要對(duì)下載下來(lái)的文件進(jìn)行解密和解壓。

tar -jcvf - ./20171226 | openssl des3 -salt -k '**********' | dd of=20171226.bz2.des3

使用tar解壓過(guò)程失敗。最后換成

zip -r -P '******' 20171227.zip  20171227

剩下就是ftp二進(jìn)制上傳和下載的代碼,網(wǎng)上說(shuō):

中文路徑問(wèn)題:由于FTP支持ASCII編碼,Python ftplib中編碼方式使用latin-1,而window默認(rèn)編碼方式為gbk,所以使用Python處理時(shí)需先將中文路徑編碼為gbk之后譯碼為latin-1字符;

上傳下載使用storline和retrline,對(duì)應(yīng)二進(jìn)制使用storbinary和retrbinary。對(duì)于stor類函數(shù)后面的參數(shù)fp表示接收一個(gè)文件對(duì)象,支持read方法,一般為打開(kāi)需要上傳的源文件,而retr類函數(shù)后面的參數(shù)表示對(duì)于返回?cái)?shù)據(jù)的處理方法。

# 下載
fp = open("20171227.zip", 'wb') 
ftp.retrbinary("RETR 20171227.zip", fp.write) 
# 上傳
fp = open("20171227.zip", 'rb')
ftp.storbinary('STOR 20171227.zip', fp)
fp.close()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • FTP服務(wù)概述 簡(jiǎn)單FTP構(gòu)建及訪問(wèn) VSFTP服務(wù)基礎(chǔ) 用戶禁錮、黑白名單 FTP并發(fā)及帶寬限制 一、FTP服務(wù)...
    紫_軒閱讀 8,059評(píng)論 3 25
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,281評(píng)論 25 708
  • 本節(jié)內(nèi)容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶輸入...
    小小不懂11閱讀 3,548評(píng)論 2 30
  • 可以看我的博客 lmwen.top 或者訂閱我的公眾號(hào) 簡(jiǎn)介有稍微接觸python的人就會(huì)知道,python中...
    ayuLiao閱讀 3,400評(píng)論 1 5
  • 目錄 上一章 “哥哥,不要,我不要。你走開(kāi)?!泵妹靡桓毕訔墵?。 “來(lái)來(lái)來(lái),親一口?!备绺绮[著眼睛,一臉壞笑。 “妹...
    唧唧王閱讀 183評(píng)論 0 1

友情鏈接更多精彩內(nèi)容