python已經默認安裝了ftplib模塊,用其中的FTP類可以實現FTP文件的上傳下載
FTP文件上傳下載
# coding:utf8 from ftplib import FTP def upload(f, remote_path, local_path): fp = open(local_path, "rb") buf_size = 1024 f.storbinary("STOR {}".format(remote_path), fp, buf_size) fp.close() def download(f, remote_path, local_path): fp = open(local_path, "wb") buf_size = 1024 f.retrbinary('RETR {}'.format(remote_path), fp.write, buf_size) fp.close() if __name__ == "__main__": ftp = FTP() ftp.connect("x.x.x.x", 21) # 第一個參數可以是ftp服務器的ip或者域名,第二個參數為ftp服務器的連接端口,默認為21 ftp.login(username, password) # 匿名登錄直接使用ftp.login() ftp.cwd("tmp") # 切換到tmp目錄 upload(ftp, "ftp_a.txt", "a.txt") # 將當前目錄下的a.txt文件上傳到ftp服務器的tmp目錄,命名為ftp_a.txt download(ftp, "ftp_a.txt", "b.txt") # 將ftp服務器tmp目錄下的ftp_a.txt文件下載到當前目錄,命名為b.txt ftp.quit()
FTP對象常用方法
ftp.cwd(path) 設置FTP當前操作的路徑,同linux中的cd
ftp.dir() 顯示目錄下所有信息
ftp.nlst() 獲取目錄下的文件,顯示的是文件名列表
ftp.mkd(directory) 新建遠程目錄
ftp.rmd(directory) 刪除遠程目錄
ftp.rename(old, new) 將遠程文件old重命名為new
ftp.delete(file_name) 刪除遠程文件
ftp.storbinary(cmd, fp, bufsize) 上傳文件,cmd是一個存儲命令,可以為"STOR filename.txt", fp為類文件對象(有read方法),bufsize設置緩沖大小
ftp.retrbinary(cmd, callback, bufsize) 下載文件,cmd是一個獲取命令,可以為"RETR filename.txt", callback是一個回調函數,用於讀取獲取到的數據塊