blob: f4d4cdf9ada9d98403b15a9ac7ffd475ec28311d [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`ftplib` --- FTP protocol client
2=====================================
3
4.. module:: ftplib
5 :synopsis: FTP protocol client (requires sockets).
6
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04007**Source code:** :source:`Lib/ftplib.py`
Georg Brandl116aa622007-08-15 14:28:22 +00008
9.. index::
10 pair: FTP; protocol
11 single: FTP; ftplib (standard module)
12
Raymond Hettinger469271d2011-01-27 20:38:46 +000013--------------
14
Georg Brandl116aa622007-08-15 14:28:22 +000015This module defines the class :class:`FTP` and a few related items. The
16:class:`FTP` class implements the client side of the FTP protocol. You can use
17this to write Python programs that perform a variety of automated FTP jobs, such
Martin Panterfe289c02016-05-28 02:20:39 +000018as mirroring other FTP servers. It is also used by the module
Senthil Kumaranaca8fd72008-06-23 04:41:59 +000019:mod:`urllib.request` to handle URLs that use FTP. For more information on FTP
20(File Transfer Protocol), see Internet :rfc:`959`.
Georg Brandl116aa622007-08-15 14:28:22 +000021
Sebastian Pedersena1a0eb42020-04-14 01:07:56 +020022The default encoding is UTF-8, following :rfc:`2640`.
23
Georg Brandl116aa622007-08-15 14:28:22 +000024Here's a sample session using the :mod:`ftplib` module::
25
26 >>> from ftplib import FTP
Prateek Nayaka7414572019-09-26 14:52:31 +053027 >>> ftp = FTP('ftp.us.debian.org') # connect to host, default port
Georg Brandl036e41d2013-10-06 18:17:56 +020028 >>> ftp.login() # user anonymous, passwd anonymous@
29 '230 Login successful.'
30 >>> ftp.cwd('debian') # change into "debian" directory
31 >>> ftp.retrlines('LIST') # list directory contents
32 -rw-rw-r-- 1 1176 1176 1063 Jun 15 10:18 README
33 ...
34 drwxr-sr-x 5 1176 1176 4096 Dec 19 2000 pool
35 drwxr-sr-x 4 1176 1176 4096 Nov 17 2008 project
36 drwxr-xr-x 3 1176 1176 4096 Oct 10 2012 tools
37 '226 Directory send OK.'
Stéphane Wirtel5d326ab2019-09-26 09:01:18 +020038 >>> with open('README', 'wb') as fp:
39 >>> ftp.retrbinary('RETR README', fp.write)
Georg Brandl116aa622007-08-15 14:28:22 +000040 '226 Transfer complete.'
41 >>> ftp.quit()
42
Georg Brandl116aa622007-08-15 14:28:22 +000043
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +000044The module defines the following items:
Georg Brandl116aa622007-08-15 14:28:22 +000045
Sebastian Pedersena1a0eb42020-04-14 01:07:56 +020046.. class:: FTP(host='', user='', passwd='', acct='', timeout=None, source_address=None, *, encoding='utf-8')
Georg Brandl116aa622007-08-15 14:28:22 +000047
48 Return a new instance of the :class:`FTP` class. When *host* is given, the
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +000049 method call ``connect(host)`` is made. When *user* is given, additionally
50 the method call ``login(user, passwd, acct)`` is made (where *passwd* and
51 *acct* default to the empty string when not given). The optional *timeout*
52 parameter specifies a timeout in seconds for blocking operations like the
Georg Brandlf78e02b2008-06-10 17:40:04 +000053 connection attempt (if is not specified, the global default timeout setting
Giampaolo Rodolà396ff062011-02-28 19:19:51 +000054 will be used). *source_address* is a 2-tuple ``(host, port)`` for the socket
Sebastian Pedersena1a0eb42020-04-14 01:07:56 +020055 to bind to as its source address before connecting. The *encoding* parameter
56 specifies the encoding for directories and filenames.
Georg Brandl116aa622007-08-15 14:28:22 +000057
Martin Panter828123c2015-11-21 22:03:08 +000058 The :class:`FTP` class supports the :keyword:`with` statement, e.g.:
Giampaolo Rodolàbd576b72010-05-10 14:53:29 +000059
60 >>> from ftplib import FTP
61 >>> with FTP("ftp1.at.proftpd.org") as ftp:
62 ... ftp.login()
63 ... ftp.dir()
Zachary Ware9f8b3a02016-08-10 00:59:59 -050064 ... # doctest: +SKIP
Giampaolo Rodolàbd576b72010-05-10 14:53:29 +000065 '230 Anonymous login ok, restrictions apply.'
66 dr-xr-xr-x 9 ftp ftp 154 May 6 10:43 .
67 dr-xr-xr-x 9 ftp ftp 154 May 6 10:43 ..
68 dr-xr-xr-x 5 ftp ftp 4096 May 6 10:43 CentOS
69 dr-xr-xr-x 3 ftp ftp 18 Jul 10 2008 Fedora
70 >>>
71
72 .. versionchanged:: 3.2
73 Support for the :keyword:`with` statement was added.
74
Giampaolo Rodolà396ff062011-02-28 19:19:51 +000075 .. versionchanged:: 3.3
76 *source_address* parameter was added.
Giampaolo Rodolàbd576b72010-05-10 14:53:29 +000077
Dong-hee Naa190e2a2020-01-14 04:34:34 +090078 .. versionchanged:: 3.9
79 If the *timeout* parameter is set to be zero, it will raise a
Sebastian Pedersena1a0eb42020-04-14 01:07:56 +020080 :class:`ValueError` to prevent the creation of a non-blocking socket.
81 The *encoding* parameter was added, and the default was changed from
82 Latin-1 to UTF-8 to follow :rfc:`2640`.
Giampaolo Rodolà396ff062011-02-28 19:19:51 +000083
Sebastian Pedersena1a0eb42020-04-14 01:07:56 +020084.. class:: FTP_TLS(host='', user='', passwd='', acct='', keyfile=None, certfile=None, context=None, timeout=None, source_address=None, *, encoding='utf-8')
Antoine Pitrouf988cd02009-11-17 20:21:14 +000085
86 A :class:`FTP` subclass which adds TLS support to FTP as described in
87 :rfc:`4217`.
88 Connect as usual to port 21 implicitly securing the FTP control connection
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +000089 before authenticating. Securing the data connection requires the user to
Antoine Pitrouc5e075f2014-03-22 18:19:11 +010090 explicitly ask for it by calling the :meth:`prot_p` method. *context*
91 is a :class:`ssl.SSLContext` object which allows bundling SSL configuration
92 options, certificates and private keys into a single (potentially
93 long-lived) structure. Please read :ref:`ssl-security` for best practices.
94
95 *keyfile* and *certfile* are a legacy alternative to *context* -- they
96 can point to PEM-formatted private key and certificate chain files
97 (respectively) for the SSL connection.
Antoine Pitrouf988cd02009-11-17 20:21:14 +000098
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +000099 .. versionadded:: 3.2
Antoine Pitrouf988cd02009-11-17 20:21:14 +0000100
Giampaolo Rodolà396ff062011-02-28 19:19:51 +0000101 .. versionchanged:: 3.3
102 *source_address* parameter was added.
103
Christian Heimese5b5edf2013-12-02 02:56:02 +0100104 .. versionchanged:: 3.4
105 The class now supports hostname check with
Antoine Pitrouc5e075f2014-03-22 18:19:11 +0100106 :attr:`ssl.SSLContext.check_hostname` and *Server Name Indication* (see
107 :data:`ssl.HAS_SNI`).
Christian Heimese5b5edf2013-12-02 02:56:02 +0100108
Christian Heimesd0486372016-09-10 23:23:33 +0200109 .. deprecated:: 3.6
110
111 *keyfile* and *certfile* are deprecated in favor of *context*.
112 Please use :meth:`ssl.SSLContext.load_cert_chain` instead, or let
113 :func:`ssl.create_default_context` select the system's trusted CA
114 certificates for you.
115
Dong-hee Naa190e2a2020-01-14 04:34:34 +0900116 .. versionchanged:: 3.9
117 If the *timeout* parameter is set to be zero, it will raise a
Sebastian Pedersena1a0eb42020-04-14 01:07:56 +0200118 :class:`ValueError` to prevent the creation of a non-blocking socket.
119 The *encoding* parameter was added, and the default was changed from
120 Latin-1 to UTF-8 to follow :rfc:`2640`.
Dong-hee Naa190e2a2020-01-14 04:34:34 +0900121
Antoine Pitrouc5e075f2014-03-22 18:19:11 +0100122 Here's a sample session using the :class:`FTP_TLS` class::
Antoine Pitrouf988cd02009-11-17 20:21:14 +0000123
Antoine Pitrouc5e075f2014-03-22 18:19:11 +0100124 >>> ftps = FTP_TLS('ftp.pureftpd.org')
125 >>> ftps.login()
126 '230 Anonymous user logged in'
127 >>> ftps.prot_p()
128 '200 Data protection level set to "private"'
129 >>> ftps.nlst()
130 ['6jack', 'OpenBSD', 'antilink', 'blogbench', 'bsdcam', 'clockspeed', 'djbdns-jedi', 'docs', 'eaccelerator-jedi', 'favicon.ico', 'francotone', 'fugu', 'ignore', 'libpuzzle', 'metalog', 'minidentd', 'misc', 'mysql-udf-global-user-variables', 'php-jenkins-hash', 'php-skein-hash', 'php-webdav', 'phpaudit', 'phpbench', 'pincaster', 'ping', 'posto', 'pub', 'public', 'public_keys', 'pure-ftpd', 'qscan', 'qtc', 'sharedance', 'skycache', 'sound', 'tmp', 'ucarp']
Antoine Pitrouf988cd02009-11-17 20:21:14 +0000131
132
Georg Brandl036490d2009-05-17 13:00:36 +0000133.. exception:: error_reply
Georg Brandl116aa622007-08-15 14:28:22 +0000134
Georg Brandl036490d2009-05-17 13:00:36 +0000135 Exception raised when an unexpected reply is received from the server.
Georg Brandl116aa622007-08-15 14:28:22 +0000136
137
Georg Brandl036490d2009-05-17 13:00:36 +0000138.. exception:: error_temp
Georg Brandl116aa622007-08-15 14:28:22 +0000139
Georg Brandl392c92a2010-10-15 19:46:19 +0000140 Exception raised when an error code signifying a temporary error (response
141 codes in the range 400--499) is received.
142
Georg Brandl116aa622007-08-15 14:28:22 +0000143
Georg Brandl036490d2009-05-17 13:00:36 +0000144.. exception:: error_perm
Georg Brandl116aa622007-08-15 14:28:22 +0000145
Georg Brandl392c92a2010-10-15 19:46:19 +0000146 Exception raised when an error code signifying a permanent error (response
147 codes in the range 500--599) is received.
148
Georg Brandl116aa622007-08-15 14:28:22 +0000149
Georg Brandl036490d2009-05-17 13:00:36 +0000150.. exception:: error_proto
Georg Brandl116aa622007-08-15 14:28:22 +0000151
Georg Brandl392c92a2010-10-15 19:46:19 +0000152 Exception raised when a reply is received from the server that does not fit
153 the response specifications of the File Transfer Protocol, i.e. begin with a
154 digit in the range 1--5.
155
Georg Brandl116aa622007-08-15 14:28:22 +0000156
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000157.. data:: all_errors
158
159 The set of all exceptions (as a tuple) that methods of :class:`FTP`
160 instances may raise as a result of problems with the FTP connection (as
161 opposed to programming errors made by the caller). This set includes the
Andrew Scheller51adfc62019-09-11 15:18:00 +0100162 four exceptions listed above as well as :exc:`OSError` and :exc:`EOFError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000163
Georg Brandl392c92a2010-10-15 19:46:19 +0000164
Georg Brandl116aa622007-08-15 14:28:22 +0000165.. seealso::
166
167 Module :mod:`netrc`
Georg Brandl036490d2009-05-17 13:00:36 +0000168 Parser for the :file:`.netrc` file format. The file :file:`.netrc` is
169 typically used by FTP clients to load user authentication information
170 before prompting the user.
Georg Brandl116aa622007-08-15 14:28:22 +0000171
Georg Brandl116aa622007-08-15 14:28:22 +0000172
173.. _ftp-objects:
174
175FTP Objects
176-----------
177
178Several methods are available in two flavors: one for handling text files and
179another for binary files. These are named for the command which is used
180followed by ``lines`` for the text version or ``binary`` for the binary version.
181
182:class:`FTP` instances have the following methods:
183
184
185.. method:: FTP.set_debuglevel(level)
186
187 Set the instance's debugging level. This controls the amount of debugging
188 output printed. The default, ``0``, produces no debugging output. A value of
189 ``1`` produces a moderate amount of debugging output, generally a single line
190 per request. A value of ``2`` or higher produces the maximum amount of
191 debugging output, logging each line sent and received on the control connection.
192
193
Giampaolo Rodolà396ff062011-02-28 19:19:51 +0000194.. method:: FTP.connect(host='', port=0, timeout=None, source_address=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000195
196 Connect to the given host and port. The default port number is ``21``, as
197 specified by the FTP protocol specification. It is rarely needed to specify a
198 different port number. This function should be called only once for each
199 instance; it should not be called at all if a host was given when the instance
200 was created. All other methods can only be used after a connection has been
201 made.
Georg Brandl116aa622007-08-15 14:28:22 +0000202 The optional *timeout* parameter specifies a timeout in seconds for the
Georg Brandlf78e02b2008-06-10 17:40:04 +0000203 connection attempt. If no *timeout* is passed, the global default timeout
204 setting will be used.
Giampaolo Rodolà396ff062011-02-28 19:19:51 +0000205 *source_address* is a 2-tuple ``(host, port)`` for the socket to bind to as
206 its source address before connecting.
207
Steve Dower44f91c32019-06-27 10:47:59 -0700208 .. audit-event:: ftplib.connect self,host,port ftplib.FTP.connect
Steve Dower60419a72019-06-24 08:42:54 -0700209
Giampaolo Rodolà396ff062011-02-28 19:19:51 +0000210 .. versionchanged:: 3.3
211 *source_address* parameter was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000212
Georg Brandl116aa622007-08-15 14:28:22 +0000213
214.. method:: FTP.getwelcome()
215
216 Return the welcome message sent by the server in reply to the initial
217 connection. (This message sometimes contains disclaimers or help information
218 that may be relevant to the user.)
219
220
Georg Brandl036490d2009-05-17 13:00:36 +0000221.. method:: FTP.login(user='anonymous', passwd='', acct='')
Georg Brandl116aa622007-08-15 14:28:22 +0000222
223 Log in as the given *user*. The *passwd* and *acct* parameters are optional and
224 default to the empty string. If no *user* is specified, it defaults to
225 ``'anonymous'``. If *user* is ``'anonymous'``, the default *passwd* is
226 ``'anonymous@'``. This function should be called only once for each instance,
227 after a connection has been established; it should not be called at all if a
228 host and user were given when the instance was created. Most FTP commands are
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000229 only allowed after the client has logged in. The *acct* parameter supplies
230 "accounting information"; few systems implement this.
Georg Brandl116aa622007-08-15 14:28:22 +0000231
232
233.. method:: FTP.abort()
234
235 Abort a file transfer that is in progress. Using this does not always work, but
236 it's worth a try.
237
238
Georg Brandl036490d2009-05-17 13:00:36 +0000239.. method:: FTP.sendcmd(cmd)
Georg Brandl116aa622007-08-15 14:28:22 +0000240
241 Send a simple command string to the server and return the response string.
242
Steve Dower44f91c32019-06-27 10:47:59 -0700243 .. audit-event:: ftplib.sendcmd self,cmd ftplib.FTP.sendcmd
Steve Dower60419a72019-06-24 08:42:54 -0700244
Georg Brandl116aa622007-08-15 14:28:22 +0000245
Georg Brandl036490d2009-05-17 13:00:36 +0000246.. method:: FTP.voidcmd(cmd)
Georg Brandl116aa622007-08-15 14:28:22 +0000247
Georg Brandl392c92a2010-10-15 19:46:19 +0000248 Send a simple command string to the server and handle the response. Return
249 nothing if a response code corresponding to success (codes in the range
250 200--299) is received. Raise :exc:`error_reply` otherwise.
Georg Brandl116aa622007-08-15 14:28:22 +0000251
Steve Dower44f91c32019-06-27 10:47:59 -0700252 .. audit-event:: ftplib.sendcmd self,cmd ftplib.FTP.voidcmd
Steve Dower60419a72019-06-24 08:42:54 -0700253
Georg Brandl116aa622007-08-15 14:28:22 +0000254
Georg Brandl036490d2009-05-17 13:00:36 +0000255.. method:: FTP.retrbinary(cmd, callback, blocksize=8192, rest=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000256
Georg Brandl036490d2009-05-17 13:00:36 +0000257 Retrieve a file in binary transfer mode. *cmd* should be an appropriate
Georg Brandl116aa622007-08-15 14:28:22 +0000258 ``RETR`` command: ``'RETR filename'``. The *callback* function is called for
Jelle Zijlstra9e52c902017-03-12 19:51:27 -0700259 each block of data received, with a single bytes argument giving the data
Georg Brandl036490d2009-05-17 13:00:36 +0000260 block. The optional *blocksize* argument specifies the maximum chunk size to
Georg Brandl116aa622007-08-15 14:28:22 +0000261 read on the low-level socket object created to do the actual transfer (which
262 will also be the largest size of the data blocks passed to *callback*). A
263 reasonable default is chosen. *rest* means the same thing as in the
264 :meth:`transfercmd` method.
265
266
Georg Brandl036490d2009-05-17 13:00:36 +0000267.. method:: FTP.retrlines(cmd, callback=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000268
Sebastian Pedersena1a0eb42020-04-14 01:07:56 +0200269 Retrieve a file or directory listing in the encoding specified by the
270 *encoding* parameter at initialization.
271 *cmd* should be an appropriate ``RETR`` command (see :meth:`retrbinary`) or
272 a command such as ``LIST`` or ``NLST`` (usually just the string ``'LIST'``).
Georg Brandl392c92a2010-10-15 19:46:19 +0000273 ``LIST`` retrieves a list of files and information about those files.
Giampaolo Rodola'd78def92011-05-06 19:49:08 +0200274 ``NLST`` retrieves a list of file names.
275 The *callback* function is called for each line with a string argument
276 containing the line with the trailing CRLF stripped. The default *callback*
277 prints the line to ``sys.stdout``.
Georg Brandl116aa622007-08-15 14:28:22 +0000278
279
Jelle Zijlstra7bb6ac72017-03-12 19:19:00 -0700280.. method:: FTP.set_pasv(val)
Georg Brandl116aa622007-08-15 14:28:22 +0000281
Jelle Zijlstra7bb6ac72017-03-12 19:19:00 -0700282 Enable "passive" mode if *val* is true, otherwise disable passive mode.
Georg Brandle6bcc912008-05-12 18:05:20 +0000283 Passive mode is on by default.
Georg Brandl116aa622007-08-15 14:28:22 +0000284
285
Berker Peksagb2fdafe2014-10-08 13:15:04 +0300286.. method:: FTP.storbinary(cmd, fp, blocksize=8192, callback=None, rest=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000287
Georg Brandl036490d2009-05-17 13:00:36 +0000288 Store a file in binary transfer mode. *cmd* should be an appropriate
Berker Peksagb2fdafe2014-10-08 13:15:04 +0300289 ``STOR`` command: ``"STOR filename"``. *fp* is a :term:`file object`
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300290 (opened in binary mode) which is read until EOF using its :meth:`~io.IOBase.read`
Ezio Melotticbd449b2012-10-05 14:09:59 +0300291 method in blocks of size *blocksize* to provide the data to be stored.
292 The *blocksize* argument defaults to 8192. *callback* is an optional single
293 parameter callable that is called on each block of data after it is sent.
294 *rest* means the same thing as in the :meth:`transfercmd` method.
Antoine Pitrou648bcd72009-11-27 13:23:26 +0000295
296 .. versionchanged:: 3.2
297 *rest* parameter added.
Georg Brandl116aa622007-08-15 14:28:22 +0000298
Georg Brandl116aa622007-08-15 14:28:22 +0000299
Berker Peksagb2fdafe2014-10-08 13:15:04 +0300300.. method:: FTP.storlines(cmd, fp, callback=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000301
Sebastian Pedersena1a0eb42020-04-14 01:07:56 +0200302 Store a file in line mode. *cmd* should be an appropriate
Georg Brandl116aa622007-08-15 14:28:22 +0000303 ``STOR`` command (see :meth:`storbinary`). Lines are read until EOF from the
Berker Peksagb2fdafe2014-10-08 13:15:04 +0300304 :term:`file object` *fp* (opened in binary mode) using its :meth:`~io.IOBase.readline`
Ezio Melotticbd449b2012-10-05 14:09:59 +0300305 method to provide the data to be stored. *callback* is an optional single
306 parameter callable that is called on each line after it is sent.
Georg Brandl116aa622007-08-15 14:28:22 +0000307
308
Georg Brandl036490d2009-05-17 13:00:36 +0000309.. method:: FTP.transfercmd(cmd, rest=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000310
Martin Panter7462b6492015-11-02 03:37:02 +0000311 Initiate a transfer over the data connection. If the transfer is active, send an
Georg Brandl116aa622007-08-15 14:28:22 +0000312 ``EPRT`` or ``PORT`` command and the transfer command specified by *cmd*, and
Martin Panter7462b6492015-11-02 03:37:02 +0000313 accept the connection. If the server is passive, send an ``EPSV`` or ``PASV``
Georg Brandl116aa622007-08-15 14:28:22 +0000314 command, connect to it, and start the transfer command. Either way, return the
315 socket for the connection.
316
317 If optional *rest* is given, a ``REST`` command is sent to the server, passing
318 *rest* as an argument. *rest* is usually a byte offset into the requested file,
319 telling the server to restart sending the file's bytes at the requested offset,
Sebastian Pedersena1a0eb42020-04-14 01:07:56 +0200320 skipping over the initial bytes. Note however that the :meth:`transfercmd`
321 method converts *rest* to a string with the *encoding* parameter specified
322 at initialization, but no check is performed on the string's contents. If the
Georg Brandl116aa622007-08-15 14:28:22 +0000323 server does not recognize the ``REST`` command, an :exc:`error_reply` exception
324 will be raised. If this happens, simply call :meth:`transfercmd` without a
325 *rest* argument.
326
327
Georg Brandl036490d2009-05-17 13:00:36 +0000328.. method:: FTP.ntransfercmd(cmd, rest=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000329
330 Like :meth:`transfercmd`, but returns a tuple of the data connection and the
331 expected size of the data. If the expected size could not be computed, ``None``
332 will be returned as the expected size. *cmd* and *rest* means the same thing as
333 in :meth:`transfercmd`.
334
335
Giampaolo Rodola'd78def92011-05-06 19:49:08 +0200336.. method:: FTP.mlsd(path="", facts=[])
337
Gregory P. Smithf1b31342015-12-13 22:10:28 -0800338 List a directory in a standardized format by using ``MLSD`` command
Giampaolo Rodola'a55efb32011-05-07 16:06:59 +0200339 (:rfc:`3659`). If *path* is omitted the current directory is assumed.
Giampaolo Rodola'd78def92011-05-06 19:49:08 +0200340 *facts* is a list of strings representing the type of information desired
Giampaolo Rodola'a55efb32011-05-07 16:06:59 +0200341 (e.g. ``["type", "size", "perm"]``). Return a generator object yielding a
342 tuple of two elements for every file found in path. First element is the
343 file name, the second one is a dictionary containing facts about the file
344 name. Content of this dictionary might be limited by the *facts* argument
345 but server is not guaranteed to return all requested facts.
Giampaolo Rodola'd78def92011-05-06 19:49:08 +0200346
347 .. versionadded:: 3.3
348
349
Georg Brandl116aa622007-08-15 14:28:22 +0000350.. method:: FTP.nlst(argument[, ...])
351
Georg Brandl392c92a2010-10-15 19:46:19 +0000352 Return a list of file names as returned by the ``NLST`` command. The
353 optional *argument* is a directory to list (default is the current server
354 directory). Multiple arguments can be used to pass non-standard options to
355 the ``NLST`` command.
Georg Brandl116aa622007-08-15 14:28:22 +0000356
Gregory P. Smithf1b31342015-12-13 22:10:28 -0800357 .. note:: If your server supports the command, :meth:`mlsd` offers a better API.
Giampaolo Rodola'd78def92011-05-06 19:49:08 +0200358
Georg Brandl116aa622007-08-15 14:28:22 +0000359
360.. method:: FTP.dir(argument[, ...])
361
362 Produce a directory listing as returned by the ``LIST`` command, printing it to
363 standard output. The optional *argument* is a directory to list (default is the
364 current server directory). Multiple arguments can be used to pass non-standard
365 options to the ``LIST`` command. If the last argument is a function, it is used
366 as a *callback* function as for :meth:`retrlines`; the default prints to
367 ``sys.stdout``. This method returns ``None``.
368
Gregory P. Smithf1b31342015-12-13 22:10:28 -0800369 .. note:: If your server supports the command, :meth:`mlsd` offers a better API.
Giampaolo Rodola'd78def92011-05-06 19:49:08 +0200370
Georg Brandl116aa622007-08-15 14:28:22 +0000371
372.. method:: FTP.rename(fromname, toname)
373
374 Rename file *fromname* on the server to *toname*.
375
376
377.. method:: FTP.delete(filename)
378
379 Remove the file named *filename* from the server. If successful, returns the
380 text of the response, otherwise raises :exc:`error_perm` on permission errors or
381 :exc:`error_reply` on other errors.
382
383
384.. method:: FTP.cwd(pathname)
385
386 Set the current directory on the server.
387
388
389.. method:: FTP.mkd(pathname)
390
391 Create a new directory on the server.
392
393
394.. method:: FTP.pwd()
395
396 Return the pathname of the current directory on the server.
397
398
399.. method:: FTP.rmd(dirname)
400
401 Remove the directory named *dirname* on the server.
402
403
404.. method:: FTP.size(filename)
405
406 Request the size of the file named *filename* on the server. On success, the
407 size of the file is returned as an integer, otherwise ``None`` is returned.
408 Note that the ``SIZE`` command is not standardized, but is supported by many
409 common server implementations.
410
411
412.. method:: FTP.quit()
413
414 Send a ``QUIT`` command to the server and close the connection. This is the
Benjamin Petersonf10a79a2008-10-11 00:49:57 +0000415 "polite" way to close a connection, but it may raise an exception if the server
Georg Brandl2ee470f2008-07-16 12:55:28 +0000416 responds with an error to the ``QUIT`` command. This implies a call to the
Georg Brandl116aa622007-08-15 14:28:22 +0000417 :meth:`close` method which renders the :class:`FTP` instance useless for
418 subsequent calls (see below).
419
420
421.. method:: FTP.close()
422
423 Close the connection unilaterally. This should not be applied to an already
Jesus Ceac73f8632012-12-26 16:47:03 +0100424 closed connection such as after a successful call to :meth:`~FTP.quit`.
425 After this call the :class:`FTP` instance should not be used any more (after
426 a call to :meth:`close` or :meth:`~FTP.quit` you cannot reopen the
427 connection by issuing another :meth:`login` method).
Georg Brandl116aa622007-08-15 14:28:22 +0000428
Antoine Pitrouf988cd02009-11-17 20:21:14 +0000429
430FTP_TLS Objects
431---------------
432
433:class:`FTP_TLS` class inherits from :class:`FTP`, defining these additional objects:
434
435.. attribute:: FTP_TLS.ssl_version
436
Benjamin Petersonbab69bf2014-12-30 15:17:03 -0600437 The SSL version to use (defaults to :attr:`ssl.PROTOCOL_SSLv23`).
Antoine Pitrouf988cd02009-11-17 20:21:14 +0000438
439.. method:: FTP_TLS.auth()
440
Martin Panter2e4571a2015-11-14 01:07:43 +0000441 Set up a secure control connection by using TLS or SSL, depending on what
442 is specified in the :attr:`ssl_version` attribute.
Antoine Pitrouf988cd02009-11-17 20:21:14 +0000443
Christian Heimese5b5edf2013-12-02 02:56:02 +0100444 .. versionchanged:: 3.4
445 The method now supports hostname check with
Antoine Pitrouc5e075f2014-03-22 18:19:11 +0100446 :attr:`ssl.SSLContext.check_hostname` and *Server Name Indication* (see
447 :data:`ssl.HAS_SNI`).
Christian Heimese5b5edf2013-12-02 02:56:02 +0100448
Giampaolo Rodola'096dcb12011-06-27 11:17:51 +0200449.. method:: FTP_TLS.ccc()
450
Florent Xicluna6d57d212011-10-23 22:23:57 +0200451 Revert control channel back to plaintext. This can be useful to take
Giampaolo Rodola'096dcb12011-06-27 11:17:51 +0200452 advantage of firewalls that know how to handle NAT with non-secure FTP
453 without opening fixed ports.
454
455 .. versionadded:: 3.3
456
Antoine Pitrouf988cd02009-11-17 20:21:14 +0000457.. method:: FTP_TLS.prot_p()
458
459 Set up secure data connection.
460
461.. method:: FTP_TLS.prot_c()
462
463 Set up clear text data connection.