ftplib介绍
一些取数的场景会用到python连接ftp,本文总结python连接ftp的基本用法。
ftplib
是 Python 中用于操作 FTP(File Transfer Protocol)的库。它提供了一组丰富的的方法和接口,可以方便地与 FTP 服务器进行通信,实现文件的上传、下载、删除、列表等操作。
以下是 ftplib
中的一些常用方法和类:
FTP
类:代表一个 FTP 连接对象,可以使用它来连接到 FTP 服务器、登录、退出等。FTP.login()
方法:用于登录 FTP 服务器,可以指定用户名和密码。FTP.logout()
方法:用于退出 FTP 服务器。FTP.pwd()
方法:显示当前目录。FTP.cwd()
方法:用于切换当前工作目录。FTP.dir()
方法:用于列出当前目录下的文件和文件夹。FTP.storbinary()
方法:用于将文件上传到 FTP 服务器。FTP.retrbinary()
方法:用于从 FTP 服务器下载文件。FTP.delete()
方法:用于删除 FTP 服务器上的文件。FTP.rename()
方法:用于重命名 FTP 服务器上的文件。
ftplib的使用
废话不多说,直接上代码:
import ftplib
ip = 'ftp_ip'
port = ftp_port
name = 'username'
password = '******'
# 登录
ftp = ftplib.FTP()
ftp.connect(ip, port)
ftp.login(name, password)
# 获取文件列表
doclist = self.ftp.nlst(path)
# 重命名
ftp.rename(from_name, to_name)
# 获取文件大小
docsize = ftp.size(addr)
# 上传文件(二进制的形式)
file_handler = open(src_addr, 'rb')
try:
self.ftp.cwd(dir_name)
self.ftp.storbinary('STOR %s' % base_name, file_handler, bufsize)
except:
traceback.print_exc()
raise DataUploadError("File %s upload error!" % src_addr)
finally:
file_handler.close()
# 上传文件(非二进制形式)
file_handler = open(src_addr, 'r')
try:
self.ftp.storlines('STOR %s' % dst_addr, file_handler)
except:
traceback.print_exc()
raise DataUploadError("File %s upload error!" % src_addr)
finally:
file_handler.close()
# 下载文件(二进制的形式)
file_handler = open(dst_addr, 'wb')
try:
self.ftp.retrbinary('RETR %s' % src_addr, file_handler.write, bufsize)
except Exception as e:
traceback.print_exc()
raise FileDownloadError("%s download error! [ErrorMsg]%s" % (src_addr, e))
finally:
file_handler.close()
# 下载文件(非二进制的形式)
file_handler = open(dst_addr, 'w')
try:
self.ftp.storlines('RETR %s' % src_addr, file_handler.write, bufsize)
except Exception as e:
traceback.print_exc()
raise FileDownloadError("%s download error! [ErrorMsg]%s" % (src_addr, e))
finally:
file_handler.close()
# 关闭连接
ftp.close()
总结:
- 基于Linux系统的ftp默认的根目录的地址和基于Windows系统的默认地址是不一样的,结合pwd()和cwd()来处理;
- 文件的上传下载时,分为二进制编码和非二进制编码两种,建议用二进制形式来读写文件,防止乱码;
- 在完成传输时,一定要记得关闭连接。