使用Python 實現ftp文件上傳、下載


python的ftplib模塊中封裝好了實現FTP傳輸的功能,直接導入使用。

 

server端

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

# 新建一個用戶組
authorizer = DummyAuthorizer()
# 將用戶名,密碼,指定目錄,權限 添加到里面
authorizer.add_user("username", "password", "file", perm="elradfmwM")  
# 這個是添加匿名用戶,任何人都可以訪問,如果去掉的話,需要輸入用戶名和密碼,可以自己嘗試
authorizer.add_anonymous("file")

handler = FTPHandler
handler.authorizer = authorizer
# 開啟服務器
server = FTPServer(("", port), handler)
server.serve_forever()

 

client端

from ftplib import FTP
import datetime
def ftpconnect(host, username, password):
    ftp = FTP()
    ftp.set_debuglevel(2)
    ftp.connect(host, 21) #填自己服務的端口號 一般是21
    ftp.login(username, password)
    ftp.set_pasv(False) #主動模式
    print(ftp.getwelcome())
    return ftp

def downloadfile(ftp, remotepath, localpath):
    # 從ftp下載文件
    bufsize = 1024
    fp = open(localpath, 'wb')
    ftp.retrbinary('RETR ' + remotepath, fp.write, bufsize)
    ftp.set_debuglevel(0)
    fp.close()


def uploadfile(ftp, localpath, remotepath):
    # 從本地上傳文件到ftp
    bufsize = 1024 
    fp = open(localpath, 'rb')
    ftp.storbinary('STOR ' + remotepath, fp, bufsize)
    ftp.set_debuglevel(0)
    fp.close()

if __name__ == "__main__":
    ftp = ftpconnect("ip", "username", "password")
    local_file = '本地上傳的文件路徑'
    target_file = '服務器生成的文件路徑'
    uploadfile(ftp, local_file, target_file)
    # downloadfile(ftp, "服務器文件路徑","本地存儲路徑")
    ftp.quit()

python3以后ftp默認是被動模式,如果需要上傳文件需要添加ftp.set_pasv(False),不然會連接超時。

 


免責聲明!

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



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