20.8. ftplib — FTP 协议 Client 端

源代码: Lib/ftplib.py


该模块定义了FTP类和一些相关项。 FTP类实现 FTP 协议的 Client 端。您可以使用它来编写执行各种自动 FTP 作业的 Python 程序,例如镜像其他 FTP 服务器。 urllib模块也使用它来处理使用 FTP 的 URL。有关 FTP(文件传输协议)的更多信息,请参见 Internet RFC 959

这是使用ftplib模块的示例会话:

>>> from ftplib import FTP
>>> ftp = FTP('ftp.debian.org')     # connect to host, default port
>>> ftp.login()                     # user anonymous, passwd anonymous@
'230 Login successful.'
>>> ftp.cwd('debian')               # change into "debian" directory
>>> ftp.retrlines('LIST')           # list directory contents
-rw-rw-r--    1 1176     1176         1063 Jun 15 10:18 README
...
drwxr-sr-x    5 1176     1176         4096 Dec 19  2000 pool
drwxr-sr-x    4 1176     1176         4096 Nov 17  2008 project
drwxr-xr-x    3 1176     1176         4096 Oct 10  2012 tools
'226 Directory send OK.'
>>> ftp.retrbinary('RETR README', open('README', 'wb').write)
'226 Transfer complete.'
>>> ftp.quit()

该模块定义以下各项:

在 2.6 版中进行了更改:添加了“超时”。

2.7 版的新Function。

在 2.7.10 版中更改:添加了* context *参数。

这是使用FTP_TLS类的示例会话:

>>> from ftplib import FTP_TLS
>>> ftps = FTP_TLS('ftp.python.org')
>>> ftps.login()           # login anonymously before securing control channel
>>> ftps.prot_p()          # switch to secure data connection
>>> ftps.retrlines('LIST') # list directory content securely
total 9
drwxr-xr-x   8 root     wheel        1024 Jan  3  1994 .
drwxr-xr-x   8 root     wheel        1024 Jan  3  1994 ..
drwxr-xr-x   2 root     wheel        1024 Jan  3  1994 bin
drwxr-xr-x   2 root     wheel        1024 Jan  3  1994 etc
d-wxrwxr-x   2 ftp      wheel        1024 Sep  5 13:43 incoming
drwxr-xr-x   2 root     wheel        1024 Nov 17  1993 lib
drwxr-xr-x   6 1094     wheel        1024 Sep 13 19:07 pub
drwxr-xr-x   3 root     wheel        1024 Jan  3  1994 usr
-rw-r--r--   1 root     root          312 Aug  1  1994 welcome.msg
'226 Transfer complete.'
>>> ftps.quit()
>>>

See also

  • Module netrc

  • .netrc文件格式的解析器。 FTPClient 端通常使用文件.netrc提示用户之前加载用户身份验证信息。

Python 源代码分发中的文件Tools/scripts/ftpmirror.py是一个脚本,可以使用ftplib模块来镜像 FTP 站点或其部分。可以用作应用此模块的扩展示例。

20.8.1. FTP 对象

有两种方法可以使用两种方法:一种用于处理文本文件,另一种用于二进制文件。它们是为所使用的命令命名的,后面跟着lines代表文本版本或binary代表二进制版本。

FTP个实例具有以下方法:

可选的* timeout 参数指定连接try的超时时间(以秒为单位)。如果未传递 timeout *,将使用全局默认超时设置。

在 2.6 版中进行了更改:添加了“超时”。

在 2.1 版中进行了更改:默认添加了* blocksize *。

在 2.6 版中进行了更改:添加了* callback *参数。

在 2.7 版中进行了更改:添加了* rest *参数。

在 2.6 版中进行了更改:添加了* callback *参数。

如果给定了可选的* rest *,则将REST命令作为参数传递给服务器REST命令。 * rest 通常是请求文件的字节偏移量,它告诉服务器以请求的偏移量重新开始发送文件的字节,跳过初始字节。但是请注意,RFC 959 仅要求 rest 为包含可打印范围从 ASCII 代码 33 到 ASCII 代码 126 的字符的字符串。transfercmd()方法因此将 rest 转换为字符串,但不对字符串进行任何检查。字符串的内容。如果服务器无法识别REST命令,将引发error_reply异常。如果发生这种情况,只需调用不带 rest *参数的transfercmd()即可。

20.8.2. FTP_TLS 对象

FTP_TLS类继承自FTP,定义了以下其他对象:

首页