Python之ftplib模塊


一、引言:

  某一天,開發哥們跟我反映lftp和java寫的ftp程序下載文件有問題,具體情況如下:當一個大於1G的文件已經下載完畢以后一直出現夯住的情況。為了重現開發哥們所說情況,我就自己用pytho寫了一個ftp的腳本,其中就有調用ftplib模塊。下面重點介紹一下ftplib模塊。

二、ftplib模塊介紹:

  ftplib是python的內置的一個標准模塊,它提供了極強大的對FTP服務器的操作,通過它我們可以連接並操作FTP服務端。 

#!/usr/bin/env python
# -*- coding=utf-8 -*-

from ftplib import FTP
import sys
import threading


def ftpconnect():
    #ftp服務器的IP
    ftp_server = '192.168.2.100'
    #ftp的用戶名
    username = 'Richard'
    #用戶的密碼
    password = 'Richard'
    #創建一個ftp的實例
    ftp=FTP()
    #打開調試級別2,顯示詳細信息
    ftp.set_debuglevel(2)
    #連接ftp服務器,需要輸入IP,端口,以及超時時間
    ftp.connect(ftp_server,2100,600)
    #連接的用戶名、密碼
    ftp.login(username,password)
    return ftp

def downloadfile():
    #需要將下載文件存在的路徑和文件名
    remotepath = sys.argv[2]
    #連接ftp服務器
    ftp = ftpconnect()
    #獲得歡迎信息
    print ftp.getwelcome()

    bufsize = 10240
    localpath = '/root/Richard.txt'
    with open(localpath,'wb') as fp:
        # fp = open(localpath,'wb')
        ftp.retrbinary('RETR ' + remotepath,fp.write,bufsize)
        print ("hello")
        ftp.set_debuglevel(0)
        # fp.close()
        ftp.quit()

def uploaded(filename):
    ftp = ftpconnect()
    remotepath = "/Richard/%s"%filename
    print ftp.getwelcome()
    bufsize = 1024
    localpath = '/var/ftp/Richard/%s' %filename
    with open(localpath,'wb') as fp:
        # fp = open(localpath,'rb')
        ftp.storbinary('STOR ' + remotepath,fp,bufsize)
        ftp.set_debuglevel(0)
        # fp.close()
        ftp.quit()

def ftp_multithreading(func,filename):
    t = threading.Thread( target = func,args=(filename,) )
    t.start()

if __name__ == "__main__":
    ftp_multithreading(sys.argv[1],sys.argv[2])

未完待續。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM