您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何使用Python操作FTP實現上傳和下載,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Python是一種編程語言,內置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。
搭建ftp服務器server端
# -*- coding:utf-8 -*- from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer # 實例化DummyAuthorizer來創建ftp用戶 authorizer = DummyAuthorizer() # 參數:用戶名,密碼,目錄,權限 authorizer.add_user('admin', '123456', r'C:\Users\Administrator\Desktop\ftp', perm='elradfmwMT') # 匿名登錄 # authorizer.add_anonymous('/home/nobody') handler = FTPHandler handler.authorizer = authorizer # 參數:IP,端口,handler server = FTPServer(('0.0.0.0', 2121), handler) #設置為0.0.0.0為本機的IP地址 server.serve_forever()
函數釋義
Python中默認安裝的ftplib模塊定義了FTP類,其中函數有限,可用來實現簡單的ftp客戶端,用于上傳或下載文件,函數列舉如下
ftp登陸連接 from ftplib import FTP #加載ftp模塊 ftp=FTP() #設置變量 ftp.set_debuglevel(2) #打開調試級別2,顯示詳細信息 ftp.connect("IP","port") #連接的ftp sever和端口 ftp.login("user","password") #連接的用戶名,密碼 print ftp.getwelcome() #打印出歡迎信息 ftp.cmd("xxx/xxx") #進入遠程目錄 bufsize=1024 #設置的緩沖區大小 filename="filename.txt" #需要下載的文件 file_handle=open(filename,"wb").write #以寫模式在本地打開文件 ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收服務器上文件并寫入本地文件 ftp.set_debuglevel(0) #關閉調試模式 ftp.quit() #退出ftp ftp相關命令操作 ftp.cwd(pathname) #設置FTP當前操作的路徑 ftp.dir() #顯示目錄下所有目錄信息 ftp.nlst() #獲取目錄下的文件 ftp.mkd(pathname) #新建遠程目錄 ftp.pwd() #返回當前所在位置 ftp.rmd(dirname) #刪除遠程目錄 ftp.delete(filename) #刪除遠程文件 ftp.rename(fromname, toname)#將fromname修改名稱為toname。 ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上傳目標文件 ftp.retrbinary("RETR filename.txt",file_handel,bufsize) #下載FTP文件
FTP.quit()與FTP.close()的區別
FTP.quit():發送QUIT命令給服務器并關閉掉連接。這是一個比較“緩和”的關閉連接方式,但是如果服務器對QUIT命令返回錯誤時,會拋出異常。
FTP.close():單方面的關閉掉連接,不應該用在已經關閉的連接之后,例如不應用在FTP.quit()之后。
例:下載、上傳文件
# coding: utf-8 from ftplib import FTP import time import tarfile import os # !/usr/bin/python # -*- coding: utf-8 -*- from ftplib import FTP def ftpconnect(host, username, password): ftp = FTP() # ftp.set_debuglevel(2) ftp.connect(host, 21) ftp.login(username, password) return ftp #從ftp下載文件 def downloadfile(ftp, remotepath, localpath): bufsize = 1024 fp = open(localpath, 'wb') ftp.retrbinary('RETR ' + remotepath, fp.write, bufsize) ftp.set_debuglevel(0) fp.close() #從本地上傳文件到ftp def uploadfile(ftp, remotepath, localpath): bufsize = 1024 fp = open(localpath, 'rb') ftp.storbinary('STOR ' + remotepath, fp, bufsize) ftp.set_debuglevel(0) fp.close() if __name__ == "__main__": ftp = ftpconnect("113.105.139.xxx", "ftp***", "Guest***") downloadfile(ftp, "Faint.mp4", "C:/Users/Administrator/Desktop/test.mp4") #調用本地播放器播放下載的視頻 os.system('start "C:\Program Files\Windows Media Player\wmplayer.exe" "C:/Users/Administrator/Desktop/test.mp4"') uploadfile(ftp, "C:/Users/Administrator/Desktop/test.mp4", "test.mp4") ftp.quit()
FTP對象方法說明
login(user='anonymous',passwd=”, acct=”) 登錄 FTP 服務器,所有參數都是可選的
pwd() 獲得當前工作目錄
cwd(path) 把當前工作目錄設置為 path 所示的路徑
dir ([path[,…[,cb]]) 顯示 path 目錄里的內容,可選的參數 cb 是一個回調函數,會傳遞給 retrlines()方法
nlst ([path[,…]) 與 dir()類似, 但返回一個文件名列表,而不是顯示這些文件名
retrlines(cmd [, cb]) 給定 FTP命令(如“ RETR filename”),用于下載文本文件。可選的回調函數 cb 用于處理文件的每一行
retrbinary(cmd,cb[,bs=8192[, ra]]) 與 retrlines()類似,只是這個指令處理二進制文件。回調函數 cb 用于處理每一塊(塊大小默認為 8KB)下載的數據
storlines(cmd, f) 給定 FTP 命令(如“ STOR filename”),用來上傳文本文件。要給定一個文件對象 f
storbinary(cmd, f,[,bs=8192]) 與 storlines()類似,只是這個指令處理二進制文件。要給定一個文件對象 f,上傳塊大小 bs 默認為 8KB
rename(old, new) 把遠程文件 old 重命名為 new
delete(path) 刪除位于 path 的遠程文件
mkd(directory) 創建遠程目錄
rmd(directory) 刪除遠程目錄
quit() 關閉連接并退出
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何使用Python操作FTP實現上傳和下載”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。