page contents

Python 库手册:ftplib 文件传输服务模块

ftplib 是 Python 标准库中用于实现 FTP 客户端功能的模块,提供了一套完整的 API 来连接 FTP 服务器、上传/下载文件、列出目录、删除文件等。

attachments-2025-07-xIjt6cCO68818ba101d5b.jpgftplib 是 Python 标准库中用于实现 FTP 客户端功能的模块,提供了一套完整的 API 来连接 FTP 服务器、上传/下载文件、列出目录、删除文件等。

它遵循 RFC 959 协议,适用于大多数支持标准 FTP 协议的服务器。

常见应用场景:

(1)自动上传/下载文件到 FTP 服务器(如网站托管服务器)。

(2)实现周期性备份脚本。

(3)对 FTP 服务器中的文件进行管理(重命名、删除、目录遍历等)。

(4)搭建自动化部署系统或文件分发平台。

核心概念

1、FTP 协议

FTP(File Transfer Protocol)是基于 TCP 的应用层协议,默认使用端口 21 建立控制连接,通过被动或主动模式建立数据通道传输文件。

2、主动模式与被动模式

主动模式(PORT):服务器主动连接客户端指定端口。

被动模式(PASV):客户端连接服务器指定端口,常用于穿越防火墙,ftplib 默认采用此模式。

3、登录验证

可使用匿名登录(anonymous)或账户密码登录。

4、文件传输类型

支持文本(ASCII)与二进制(BINARY)模式传输。

应用举例

例 1:连接 FTP 并列出根目录内容

from ftplib import FTP

ftp = FTP()

ftp.connect(host='192.168.0.7', port=2121)

ftp.login(user='user1', passwd='123456')

ftp.dir()

ftp.quit()

例 2:下载 FTP 服务器中的文件(以二进制方式)

from ftplib import FTP

ftp = FTP()

ftp.connect(host='192.168.0.7', port=2121)

ftp.login(user='user1', passwd='123456')

with open('downloaded_file.png', 'wb') as f:

    ftp.retrbinary('RETR test.png', f.write)

ftp.quit()

例 3:上传本地文件到 FTP 服务器

from ftplib import FTP

ftp = FTP()

ftp.connect(host='192.168.0.7', port=2121)

ftp.login(user='user1', passwd='123456')

with open('test.png', 'rb') as f:

    ftp.storbinary('STOR uploaded.png', f)

ftp.quit()

例 4:创建目录并切换到该目录

from ftplib import FTP

ftp = FTP()

ftp.connect(host='192.168.0.7', port=2121)

ftp.login(user='user1', passwd='123456')

ftp.mkd('new_folder')

ftp.cwd('new_folder')  # 切换工作目录

ftp.quit()

例 5:删除远程文件与目录

from ftplib import FTP

ftp = FTP()

ftp.connect(host='192.168.0.7', port=2121)

ftp.login(user='user1', passwd='123456')

ftp.delete('uploaded.png')  # 删除文件

ftp.rmd('new_folder')       # 删除空目录

ftp.quit()

常用函数速览

connect(host='', port=0, timeout=None)

连接 FTP 服务器。

参数:

host:主机地址

port:端口号(默认为 21)

timeout:超时时间(秒)

返回:服务器欢迎信息

cwd(path)

切换工作目录。

参数:path 为要进入的目录路径(字符串)

返回:服务器响应字符串

delete(filename)

删除远程文件。

参数:filename 为远程文件名

返回:服务器响应字符串

dir([path])

显示目录内容(带详细信息)。

参数:可选参数 path,默认显示当前目录

返回:打印输出,无返回值

login(user='anonymous', passwd='', acct='')

登录 FTP 服务器。

参数:用户名、密码、账号(acct 很少使用)

返回:服务器响应字符串

mkd(dirname)

创建新目录。

参数:目录名称

返回:服务器响应字符串

nlst([path])

列出指定目录的文件名列表。

参数:可选目录路径

返回:文件名字符串列表

pwd()

获取当前目录路径。

参数:无

返回:字符串,当前路径

quit()

退出 FTP 会话。

参数:无

返回:服务器响应字符串

retrbinary(cmd, callback[, blocksize=8192])

以二进制方式下载文件。

参数:

cmd:FTP 命令(如 "RETR filename")

callback:处理下载数据的函数(通常为 file.write)

blocksize:每次读取的块大小(默认为 8192)

返回:服务器响应字符串

rmd(dirname)

删除远程目录(必须为空)。

参数:目录名称

返回:服务器响应字符串

set_pasv(val)

设置是否使用被动模式。

参数:

val=True 使用被动模式

val=False 切换为主动模式

返回:无

storbinary(cmd, file[, blocksize=8192])

以二进制方式上传文件。

参数:

cmd:FTP 命令(如 "STOR filename")

file:打开的二进制文件对象

blocksize:上传块大小

返回:服务器响应字符串

FTP([host[, user[, passwd[, acct]]]])

创建 FTP 客户端实例。

参数:

可直接提供连接和登录信息

推荐使用 .connect() + .login() 方式以自定义端口

返回:FTP 对象

补充说明

1、默认使用 PASV 模式,如遇问题可尝试 ftp.set_pasv(False) 切换至主动模式。

2、上传/下载文件应使用二进制方式以避免数据损坏。

3、中文文件名建议确保服务器和客户端均采用 UTF-8。

4、FTP_TLS 类支持使用 TLS 的 FTP(FTPS)连接,适合安全场景。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-07-24 09:26
  • 阅读 ( 40 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1335 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2172 文章
  3. Pack 1335 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章