~dkuhlman/python-training-materials/Materials

« back to all changes in this revision

Viewing changes to python-2.7.12-docs-html/_sources/library/ftplib.txt

  • Committer: Dave Kuhlman
  • Date: 2017-04-15 16:24:56 UTC
  • Revision ID: dkuhlman@davekuhlman.org-20170415162456-iav9vozzg4iwqwv3
Updated docs

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
:mod:`ftplib` --- FTP protocol client
 
2
=====================================
 
3
 
 
4
.. module:: ftplib
 
5
   :synopsis: FTP protocol client (requires sockets).
 
6
 
 
7
 
 
8
.. index::
 
9
   pair: FTP; protocol
 
10
   single: FTP; ftplib (standard module)
 
11
 
 
12
**Source code:** :source:`Lib/ftplib.py`
 
13
 
 
14
--------------
 
15
 
 
16
This module defines the class :class:`FTP` and a few related items. The
 
17
:class:`FTP` class implements the client side of the FTP protocol.  You can use
 
18
this to write Python programs that perform a variety of automated FTP jobs, such
 
19
as mirroring other FTP servers.  It is also used by the module :mod:`urllib` to
 
20
handle URLs that use FTP.  For more information on FTP (File Transfer Protocol),
 
21
see Internet :rfc:`959`.
 
22
 
 
23
Here's a sample session using the :mod:`ftplib` module::
 
24
 
 
25
   >>> from ftplib import FTP
 
26
   >>> ftp = FTP('ftp.debian.org')     # connect to host, default port
 
27
   >>> ftp.login()                     # user anonymous, passwd anonymous@
 
28
   '230 Login successful.'
 
29
   >>> ftp.cwd('debian')               # change into "debian" directory
 
30
   >>> ftp.retrlines('LIST')           # list directory contents
 
31
   -rw-rw-r--    1 1176     1176         1063 Jun 15 10:18 README
 
32
   ...
 
33
   drwxr-sr-x    5 1176     1176         4096 Dec 19  2000 pool
 
34
   drwxr-sr-x    4 1176     1176         4096 Nov 17  2008 project
 
35
   drwxr-xr-x    3 1176     1176         4096 Oct 10  2012 tools
 
36
   '226 Directory send OK.'
 
37
   >>> ftp.retrbinary('RETR README', open('README', 'wb').write)
 
38
   '226 Transfer complete.'
 
39
   >>> ftp.quit()
 
40
 
 
41
 
 
42
The module defines the following items:
 
43
 
 
44
.. class:: FTP([host[, user[, passwd[, acct[, timeout]]]]])
 
45
 
 
46
   Return a new instance of the :class:`FTP` class.  When *host* is given, the
 
47
   method call ``connect(host)`` is made.  When *user* is given, additionally
 
48
   the method call ``login(user, passwd, acct)`` is made (where *passwd* and
 
49
   *acct* default to the empty string when not given).  The optional *timeout*
 
50
   parameter specifies a timeout in seconds for blocking operations like the
 
51
   connection attempt (if is not specified, the global default timeout setting
 
52
   will be used).
 
53
 
 
54
   .. versionchanged:: 2.6
 
55
      *timeout* was added.
 
56
 
 
57
 
 
58
.. class:: FTP_TLS([host[, user[, passwd[, acct[, keyfile[, certfile[, context[, timeout]]]]]]]])
 
59
 
 
60
   A :class:`FTP` subclass which adds TLS support to FTP as described in
 
61
   :rfc:`4217`.
 
62
   Connect as usual to port 21 implicitly securing the FTP control connection
 
63
   before authenticating. Securing the data connection requires the user to
 
64
   explicitly ask for it by calling the :meth:`prot_p` method.  *context*
 
65
   is a :class:`ssl.SSLContext` object which allows bundling SSL configuration
 
66
   options, certificates and private keys into a single (potentially
 
67
   long-lived) structure.  Please read :ref:`ssl-security` for best practices.
 
68
 
 
69
   *keyfile* and *certfile* are a legacy alternative to *context* -- they
 
70
   can point to PEM-formatted private key and certificate chain files
 
71
   (respectively) for the SSL connection.
 
72
 
 
73
   .. versionadded:: 2.7
 
74
 
 
75
   .. versionchanged:: 2.7.10
 
76
      The *context* parameter was added.
 
77
 
 
78
   Here's a sample session using the :class:`FTP_TLS` class:
 
79
 
 
80
   >>> from ftplib import FTP_TLS
 
81
   >>> ftps = FTP_TLS('ftp.python.org')
 
82
   >>> ftps.login()           # login anonymously before securing control channel
 
83
   >>> ftps.prot_p()          # switch to secure data connection
 
84
   >>> ftps.retrlines('LIST') # list directory content securely
 
85
   total 9
 
86
   drwxr-xr-x   8 root     wheel        1024 Jan  3  1994 .
 
87
   drwxr-xr-x   8 root     wheel        1024 Jan  3  1994 ..
 
88
   drwxr-xr-x   2 root     wheel        1024 Jan  3  1994 bin
 
89
   drwxr-xr-x   2 root     wheel        1024 Jan  3  1994 etc
 
90
   d-wxrwxr-x   2 ftp      wheel        1024 Sep  5 13:43 incoming
 
91
   drwxr-xr-x   2 root     wheel        1024 Nov 17  1993 lib
 
92
   drwxr-xr-x   6 1094     wheel        1024 Sep 13 19:07 pub
 
93
   drwxr-xr-x   3 root     wheel        1024 Jan  3  1994 usr
 
94
   -rw-r--r--   1 root     root          312 Aug  1  1994 welcome.msg
 
95
   '226 Transfer complete.'
 
96
   >>> ftps.quit()
 
97
   >>>
 
98
 
 
99
 
 
100
.. exception:: error_reply
 
101
 
 
102
   Exception raised when an unexpected reply is received from the server.
 
103
 
 
104
 
 
105
.. exception:: error_temp
 
106
 
 
107
   Exception raised when an error code signifying a temporary error (response
 
108
   codes in the range 400--499) is received.
 
109
 
 
110
 
 
111
.. exception:: error_perm
 
112
 
 
113
   Exception raised when an error code signifying a permanent error (response
 
114
   codes in the range 500--599) is received.
 
115
 
 
116
 
 
117
.. exception:: error_proto
 
118
 
 
119
   Exception raised when a reply is received from the server that does not fit
 
120
   the response specifications of the File Transfer Protocol, i.e. begin with a
 
121
   digit in the range 1--5.
 
122
 
 
123
 
 
124
.. data:: all_errors
 
125
 
 
126
   The set of all exceptions (as a tuple) that methods of :class:`FTP`
 
127
   instances may raise as a result of problems with the FTP connection (as
 
128
   opposed to programming errors made by the caller).  This set includes the
 
129
   four exceptions listed above as well as :exc:`socket.error` and
 
130
   :exc:`IOError`.
 
131
 
 
132
 
 
133
.. seealso::
 
134
 
 
135
   Module :mod:`netrc`
 
136
      Parser for the :file:`.netrc` file format.  The file :file:`.netrc` is
 
137
      typically used by FTP clients to load user authentication information
 
138
      before prompting the user.
 
139
 
 
140
   .. index:: single: ftpmirror.py
 
141
 
 
142
   The file :file:`Tools/scripts/ftpmirror.py` in the Python source distribution is
 
143
   a script that can mirror FTP sites, or portions thereof, using the :mod:`ftplib`
 
144
   module. It can be used as an extended example that applies this module.
 
145
 
 
146
 
 
147
.. _ftp-objects:
 
148
 
 
149
FTP Objects
 
150
-----------
 
151
 
 
152
Several methods are available in two flavors: one for handling text files and
 
153
another for binary files.  These are named for the command which is used
 
154
followed by ``lines`` for the text version or ``binary`` for the binary version.
 
155
 
 
156
:class:`FTP` instances have the following methods:
 
157
 
 
158
 
 
159
.. method:: FTP.set_debuglevel(level)
 
160
 
 
161
   Set the instance's debugging level.  This controls the amount of debugging
 
162
   output printed.  The default, ``0``, produces no debugging output.  A value of
 
163
   ``1`` produces a moderate amount of debugging output, generally a single line
 
164
   per request.  A value of ``2`` or higher produces the maximum amount of
 
165
   debugging output, logging each line sent and received on the control connection.
 
166
 
 
167
 
 
168
.. method:: FTP.connect(host[, port[, timeout]])
 
169
 
 
170
   Connect to the given host and port.  The default port number is ``21``, as
 
171
   specified by the FTP protocol specification.  It is rarely needed to specify a
 
172
   different port number.  This function should be called only once for each
 
173
   instance; it should not be called at all if a host was given when the instance
 
174
   was created.  All other methods can only be used after a connection has been
 
175
   made.
 
176
 
 
177
   The optional *timeout* parameter specifies a timeout in seconds for the
 
178
   connection attempt. If no *timeout* is passed, the global default timeout
 
179
   setting will be used.
 
180
 
 
181
   .. versionchanged:: 2.6
 
182
      *timeout* was added.
 
183
 
 
184
 
 
185
.. method:: FTP.getwelcome()
 
186
 
 
187
   Return the welcome message sent by the server in reply to the initial
 
188
   connection.  (This message sometimes contains disclaimers or help information
 
189
   that may be relevant to the user.)
 
190
 
 
191
 
 
192
.. method:: FTP.login([user[, passwd[, acct]]])
 
193
 
 
194
   Log in as the given *user*.  The *passwd* and *acct* parameters are optional and
 
195
   default to the empty string.  If no *user* is specified, it defaults to
 
196
   ``'anonymous'``.  If *user* is ``'anonymous'``, the default *passwd* is
 
197
   ``'anonymous@'``.  This function should be called only once for each instance,
 
198
   after a connection has been established; it should not be called at all if a
 
199
   host and user were given when the instance was created.  Most FTP commands are
 
200
   only allowed after the client has logged in.  The *acct* parameter supplies
 
201
   "accounting information"; few systems implement this.
 
202
 
 
203
 
 
204
.. method:: FTP.abort()
 
205
 
 
206
   Abort a file transfer that is in progress.  Using this does not always work, but
 
207
   it's worth a try.
 
208
 
 
209
 
 
210
.. method:: FTP.sendcmd(command)
 
211
 
 
212
   Send a simple command string to the server and return the response string.
 
213
 
 
214
 
 
215
.. method:: FTP.voidcmd(command)
 
216
 
 
217
   Send a simple command string to the server and handle the response.  Return
 
218
   nothing if a response code corresponding to success (codes in the range
 
219
   200--299) is received.  Raise :exc:`error_reply` otherwise.
 
220
 
 
221
 
 
222
.. method:: FTP.retrbinary(command, callback[, maxblocksize[, rest]])
 
223
 
 
224
   Retrieve a file in binary transfer mode.  *command* should be an appropriate
 
225
   ``RETR`` command: ``'RETR filename'``. The *callback* function is called for
 
226
   each block of data received, with a single string argument giving the data
 
227
   block. The optional *maxblocksize* argument specifies the maximum chunk size to
 
228
   read on the low-level socket object created to do the actual transfer (which
 
229
   will also be the largest size of the data blocks passed to *callback*).  A
 
230
   reasonable default is chosen. *rest* means the same thing as in the
 
231
   :meth:`transfercmd` method.
 
232
 
 
233
 
 
234
.. method:: FTP.retrlines(command[, callback])
 
235
 
 
236
   Retrieve a file or directory listing in ASCII transfer mode.  *command*
 
237
   should be an appropriate ``RETR`` command (see :meth:`retrbinary`) or a
 
238
   command such as ``LIST``, ``NLST`` or ``MLSD`` (usually just the string
 
239
   ``'LIST'``).  ``LIST`` retrieves a list of files and information about those files.
 
240
   ``NLST`` retrieves a list of file names.  On some servers, ``MLSD`` retrieves
 
241
   a machine readable list of files and information about those files.  The *callback*
 
242
   function is called for each line with a string argument containing the line with
 
243
   the trailing CRLF stripped.  The default *callback* prints the line to ``sys.stdout``.
 
244
 
 
245
 
 
246
.. method:: FTP.set_pasv(boolean)
 
247
 
 
248
   Enable "passive" mode if *boolean* is true, other disable passive mode.  (In
 
249
   Python 2.0 and before, passive mode was off by default; in Python 2.1 and later,
 
250
   it is on by default.)
 
251
 
 
252
 
 
253
.. method:: FTP.storbinary(command, file[, blocksize, callback, rest])
 
254
 
 
255
   Store a file in binary transfer mode.  *command* should be an appropriate
 
256
   ``STOR`` command: ``"STOR filename"``. *file* is an open file object which is
 
257
   read until EOF using its :meth:`read` method in blocks of size *blocksize* to
 
258
   provide the data to be stored.  The *blocksize* argument defaults to 8192.
 
259
   *callback* is an optional single parameter callable that is called
 
260
   on each block of data after it is sent. *rest* means the same thing as in
 
261
   the :meth:`transfercmd` method.
 
262
 
 
263
   .. versionchanged:: 2.1
 
264
      default for *blocksize* added.
 
265
 
 
266
   .. versionchanged:: 2.6
 
267
      *callback* parameter added.
 
268
 
 
269
   .. versionchanged:: 2.7
 
270
      *rest* parameter added.
 
271
 
 
272
.. method:: FTP.storlines(command, file[, callback])
 
273
 
 
274
   Store a file in ASCII transfer mode.  *command* should be an appropriate
 
275
   ``STOR`` command (see :meth:`storbinary`).  Lines are read until EOF from the
 
276
   open file object *file* using its :meth:`~file.readline` method to provide
 
277
   the data to be stored.  *callback* is an optional single parameter callable
 
278
   that is called on each line after it is sent.
 
279
 
 
280
   .. versionchanged:: 2.6
 
281
      *callback* parameter added.
 
282
 
 
283
 
 
284
.. method:: FTP.transfercmd(cmd[, rest])
 
285
 
 
286
   Initiate a transfer over the data connection.  If the transfer is active, send an
 
287
   ``EPRT`` or  ``PORT`` command and the transfer command specified by *cmd*, and
 
288
   accept the connection.  If the server is passive, send an ``EPSV`` or ``PASV``
 
289
   command, connect to it, and start the transfer command.  Either way, return the
 
290
   socket for the connection.
 
291
 
 
292
   If optional *rest* is given, a ``REST`` command is sent to the server, passing
 
293
   *rest* as an argument.  *rest* is usually a byte offset into the requested file,
 
294
   telling the server to restart sending the file's bytes at the requested offset,
 
295
   skipping over the initial bytes.  Note however that RFC 959 requires only that
 
296
   *rest* be a string containing characters in the printable range from ASCII code
 
297
   33 to ASCII code 126.  The :meth:`transfercmd` method, therefore, converts
 
298
   *rest* to a string, but no check is performed on the string's contents.  If the
 
299
   server does not recognize the ``REST`` command, an :exc:`error_reply` exception
 
300
   will be raised.  If this happens, simply call :meth:`transfercmd` without a
 
301
   *rest* argument.
 
302
 
 
303
 
 
304
.. method:: FTP.ntransfercmd(cmd[, rest])
 
305
 
 
306
   Like :meth:`transfercmd`, but returns a tuple of the data connection and the
 
307
   expected size of the data.  If the expected size could not be computed, ``None``
 
308
   will be returned as the expected size.  *cmd* and *rest* means the same thing as
 
309
   in :meth:`transfercmd`.
 
310
 
 
311
 
 
312
.. method:: FTP.nlst(argument[, ...])
 
313
 
 
314
   Return a list of file names as returned by the ``NLST`` command.  The
 
315
   optional *argument* is a directory to list (default is the current server
 
316
   directory).  Multiple arguments can be used to pass non-standard options to
 
317
   the ``NLST`` command.
 
318
 
 
319
 
 
320
.. method:: FTP.dir(argument[, ...])
 
321
 
 
322
   Produce a directory listing as returned by the ``LIST`` command, printing it to
 
323
   standard output.  The optional *argument* is a directory to list (default is the
 
324
   current server directory).  Multiple arguments can be used to pass non-standard
 
325
   options to the ``LIST`` command.  If the last argument is a function, it is used
 
326
   as a *callback* function as for :meth:`retrlines`; the default prints to
 
327
   ``sys.stdout``.  This method returns ``None``.
 
328
 
 
329
 
 
330
.. method:: FTP.rename(fromname, toname)
 
331
 
 
332
   Rename file *fromname* on the server to *toname*.
 
333
 
 
334
 
 
335
.. method:: FTP.delete(filename)
 
336
 
 
337
   Remove the file named *filename* from the server.  If successful, returns the
 
338
   text of the response, otherwise raises :exc:`error_perm` on permission errors or
 
339
   :exc:`error_reply` on other errors.
 
340
 
 
341
 
 
342
.. method:: FTP.cwd(pathname)
 
343
 
 
344
   Set the current directory on the server.
 
345
 
 
346
 
 
347
.. method:: FTP.mkd(pathname)
 
348
 
 
349
   Create a new directory on the server.
 
350
 
 
351
 
 
352
.. method:: FTP.pwd()
 
353
 
 
354
   Return the pathname of the current directory on the server.
 
355
 
 
356
 
 
357
.. method:: FTP.rmd(dirname)
 
358
 
 
359
   Remove the directory named *dirname* on the server.
 
360
 
 
361
 
 
362
.. method:: FTP.size(filename)
 
363
 
 
364
   Request the size of the file named *filename* on the server.  On success, the
 
365
   size of the file is returned as an integer, otherwise ``None`` is returned.
 
366
   Note that the ``SIZE`` command is not  standardized, but is supported by many
 
367
   common server implementations.
 
368
 
 
369
 
 
370
.. method:: FTP.quit()
 
371
 
 
372
   Send a ``QUIT`` command to the server and close the connection. This is the
 
373
   "polite" way to close a connection, but it may raise an exception if the server
 
374
   responds with an error to the ``QUIT`` command.  This implies a call to the
 
375
   :meth:`close` method which renders the :class:`FTP` instance useless for
 
376
   subsequent calls (see below).
 
377
 
 
378
 
 
379
.. method:: FTP.close()
 
380
 
 
381
   Close the connection unilaterally.  This should not be applied to an already
 
382
   closed connection such as after a successful call to :meth:`~FTP.quit`.
 
383
   After this call the :class:`FTP` instance should not be used any more (after
 
384
   a call to :meth:`close` or :meth:`~FTP.quit` you cannot reopen the
 
385
   connection by issuing another :meth:`login` method).
 
386
 
 
387
 
 
388
FTP_TLS Objects
 
389
---------------
 
390
 
 
391
:class:`FTP_TLS` class inherits from :class:`FTP`, defining these additional objects:
 
392
 
 
393
.. attribute:: FTP_TLS.ssl_version
 
394
 
 
395
   The SSL version to use (defaults to :attr:`ssl.PROTOCOL_SSLv23`).
 
396
 
 
397
.. method:: FTP_TLS.auth()
 
398
 
 
399
   Set up secure control connection by using TLS or SSL, depending on what
 
400
   specified in :meth:`ssl_version` attribute.
 
401
 
 
402
.. method:: FTP_TLS.prot_p()
 
403
 
 
404
   Set up secure data connection.
 
405
 
 
406
.. method:: FTP_TLS.prot_c()
 
407
 
 
408
   Set up clear text data connection.