Server : Apache System : Linux server1.cgrithy.com 3.10.0-1160.95.1.el7.x86_64 #1 SMP Mon Jul 24 13:59:37 UTC 2023 x86_64 User : nobody ( 99) PHP Version : 8.1.23 Disable Function : NONE Directory : /usr/share/doc/python-docs-2.7.5/html/library/ |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>20.8. ftplib — FTP protocol client — Python 2.7.5 documentation</title> <link rel="stylesheet" href="../_static/default.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '2.7.5', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/sidebar.js"></script> <link rel="search" type="application/opensearchdescription+xml" title="Search within Python 2.7.5 documentation" href="../_static/opensearch.xml"/> <link rel="author" title="About these documents" href="../about.html" /> <link rel="copyright" title="Copyright" href="../copyright.html" /> <link rel="top" title="Python 2.7.5 documentation" href="../index.html" /> <link rel="up" title="20. Internet Protocols and Support" href="internet.html" /> <link rel="next" title="20.9. poplib — POP3 protocol client" href="poplib.html" /> <link rel="prev" title="20.7. httplib — HTTP protocol client" href="httplib.html" /> <link rel="shortcut icon" type="image/png" href="../_static/py.png" /> <script type="text/javascript" src="../_static/copybutton.js"></script> </head> <body> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="poplib.html" title="20.9. poplib — POP3 protocol client" accesskey="N">next</a> |</li> <li class="right" > <a href="httplib.html" title="20.7. httplib — HTTP protocol client" accesskey="P">previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="http://www.python.org/">Python</a> »</li> <li> <a href="../index.html">Python 2.7.5 documentation</a> » </li> <li><a href="index.html" >The Python Standard Library</a> »</li> <li><a href="internet.html" accesskey="U">20. Internet Protocols and Support</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="module-ftplib"> <span id="ftplib-ftp-protocol-client"></span><h1>20.8. <a class="reference internal" href="#module-ftplib" title="ftplib: FTP protocol client (requires sockets)."><tt class="xref py py-mod docutils literal"><span class="pre">ftplib</span></tt></a> — FTP protocol client<a class="headerlink" href="#module-ftplib" title="Permalink to this headline">¶</a></h1> <p id="index-0"><strong>Source code:</strong> <a class="reference external" href="http://hg.python.org/cpython/file/2.7/Lib/ftplib.py">Lib/ftplib.py</a></p> <hr class="docutils" /> <p>This module defines the class <a class="reference internal" href="#ftplib.FTP" title="ftplib.FTP"><tt class="xref py py-class docutils literal"><span class="pre">FTP</span></tt></a> and a few related items. The <a class="reference internal" href="#ftplib.FTP" title="ftplib.FTP"><tt class="xref py py-class docutils literal"><span class="pre">FTP</span></tt></a> class implements the client side of the FTP protocol. You can use this to write Python programs that perform a variety of automated FTP jobs, such as mirroring other ftp servers. It is also used by the module <a class="reference internal" href="urllib.html#module-urllib" title="urllib: Open an arbitrary network resource by URL (requires sockets)."><tt class="xref py py-mod docutils literal"><span class="pre">urllib</span></tt></a> to handle URLs that use FTP. For more information on FTP (File Transfer Protocol), see Internet <span class="target" id="index-1"></span><a class="rfc reference external" href="http://tools.ietf.org/html/rfc959.html"><strong>RFC 959</strong></a>.</p> <p>Here’s a sample session using the <a class="reference internal" href="#module-ftplib" title="ftplib: FTP protocol client (requires sockets)."><tt class="xref py py-mod docutils literal"><span class="pre">ftplib</span></tt></a> module:</p> <div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">ftplib</span> <span class="kn">import</span> <span class="n">FTP</span> <span class="gp">>>> </span><span class="n">ftp</span> <span class="o">=</span> <span class="n">FTP</span><span class="p">(</span><span class="s">'ftp.cwi.nl'</span><span class="p">)</span> <span class="c"># connect to host, default port</span> <span class="gp">>>> </span><span class="n">ftp</span><span class="o">.</span><span class="n">login</span><span class="p">()</span> <span class="c"># user anonymous, passwd anonymous@</span> <span class="gp">>>> </span><span class="n">ftp</span><span class="o">.</span><span class="n">retrlines</span><span class="p">(</span><span class="s">'LIST'</span><span class="p">)</span> <span class="c"># list directory contents</span> <span class="go">total 24418</span> <span class="go">drwxrwsr-x 5 ftp-usr pdmaint 1536 Mar 20 09:48 .</span> <span class="go">dr-xr-srwt 105 ftp-usr pdmaint 1536 Mar 21 14:32 ..</span> <span class="go">-rw-r--r-- 1 ftp-usr pdmaint 5305 Mar 20 09:48 INDEX</span> <span class="go"> .</span> <span class="go"> .</span> <span class="go"> .</span> <span class="gp">>>> </span><span class="n">ftp</span><span class="o">.</span><span class="n">retrbinary</span><span class="p">(</span><span class="s">'RETR README'</span><span class="p">,</span> <span class="nb">open</span><span class="p">(</span><span class="s">'README'</span><span class="p">,</span> <span class="s">'wb'</span><span class="p">)</span><span class="o">.</span><span class="n">write</span><span class="p">)</span> <span class="go">'226 Transfer complete.'</span> <span class="gp">>>> </span><span class="n">ftp</span><span class="o">.</span><span class="n">quit</span><span class="p">()</span> </pre></div> </div> <p>The module defines the following items:</p> <dl class="class"> <dt id="ftplib.FTP"> <em class="property">class </em><tt class="descclassname">ftplib.</tt><tt class="descname">FTP</tt><big>(</big><span class="optional">[</span><em>host</em><span class="optional">[</span>, <em>user</em><span class="optional">[</span>, <em>passwd</em><span class="optional">[</span>, <em>acct</em><span class="optional">[</span>, <em>timeout</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP" title="Permalink to this definition">¶</a></dt> <dd><p>Return a new instance of the <a class="reference internal" href="#ftplib.FTP" title="ftplib.FTP"><tt class="xref py py-class docutils literal"><span class="pre">FTP</span></tt></a> class. When <em>host</em> is given, the method call <tt class="docutils literal"><span class="pre">connect(host)</span></tt> is made. When <em>user</em> is given, additionally the method call <tt class="docutils literal"><span class="pre">login(user,</span> <span class="pre">passwd,</span> <span class="pre">acct)</span></tt> is made (where <em>passwd</em> and <em>acct</em> default to the empty string when not given). The optional <em>timeout</em> parameter specifies a timeout in seconds for blocking operations like the connection attempt (if is not specified, the global default timeout setting will be used).</p> <p class="versionchanged"> <span class="versionmodified">Changed in version 2.6: </span><em>timeout</em> was added.</p> </dd></dl> <dl class="class"> <dt id="ftplib.FTP_TLS"> <em class="property">class </em><tt class="descclassname">ftplib.</tt><tt class="descname">FTP_TLS</tt><big>(</big><span class="optional">[</span><em>host</em><span class="optional">[</span>, <em>user</em><span class="optional">[</span>, <em>passwd</em><span class="optional">[</span>, <em>acct</em><span class="optional">[</span>, <em>keyfile</em><span class="optional">[</span>, <em>certfile</em><span class="optional">[</span>, <em>timeout</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP_TLS" title="Permalink to this definition">¶</a></dt> <dd><p>A <a class="reference internal" href="#ftplib.FTP" title="ftplib.FTP"><tt class="xref py py-class docutils literal"><span class="pre">FTP</span></tt></a> subclass which adds TLS support to FTP as described in <span class="target" id="index-2"></span><a class="rfc reference external" href="http://tools.ietf.org/html/rfc4217.html"><strong>RFC 4217</strong></a>. Connect as usual to port 21 implicitly securing the FTP control connection before authenticating. Securing the data connection requires the user to explicitly ask for it by calling the <a class="reference internal" href="#ftplib.FTP_TLS.prot_p" title="ftplib.FTP_TLS.prot_p"><tt class="xref py py-meth docutils literal"><span class="pre">prot_p()</span></tt></a> method. <em>keyfile</em> and <em>certfile</em> are optional – they can contain a PEM formatted private key and certificate chain file name for the SSL connection.</p> <p class="versionadded"> <span class="versionmodified">New in version 2.7.</span></p> <p>Here’s a sample session using the <a class="reference internal" href="#ftplib.FTP_TLS" title="ftplib.FTP_TLS"><tt class="xref py py-class docutils literal"><span class="pre">FTP_TLS</span></tt></a> class:</p> <div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">ftplib</span> <span class="kn">import</span> <span class="n">FTP_TLS</span> <span class="gp">>>> </span><span class="n">ftps</span> <span class="o">=</span> <span class="n">FTP_TLS</span><span class="p">(</span><span class="s">'ftp.python.org'</span><span class="p">)</span> <span class="gp">>>> </span><span class="n">ftps</span><span class="o">.</span><span class="n">login</span><span class="p">()</span> <span class="c"># login anonymously before securing control channel</span> <span class="gp">>>> </span><span class="n">ftps</span><span class="o">.</span><span class="n">prot_p</span><span class="p">()</span> <span class="c"># switch to secure data connection</span> <span class="gp">>>> </span><span class="n">ftps</span><span class="o">.</span><span class="n">retrlines</span><span class="p">(</span><span class="s">'LIST'</span><span class="p">)</span> <span class="c"># list directory content securely</span> <span class="go">total 9</span> <span class="go">drwxr-xr-x 8 root wheel 1024 Jan 3 1994 .</span> <span class="go">drwxr-xr-x 8 root wheel 1024 Jan 3 1994 ..</span> <span class="go">drwxr-xr-x 2 root wheel 1024 Jan 3 1994 bin</span> <span class="go">drwxr-xr-x 2 root wheel 1024 Jan 3 1994 etc</span> <span class="go">d-wxrwxr-x 2 ftp wheel 1024 Sep 5 13:43 incoming</span> <span class="go">drwxr-xr-x 2 root wheel 1024 Nov 17 1993 lib</span> <span class="go">drwxr-xr-x 6 1094 wheel 1024 Sep 13 19:07 pub</span> <span class="go">drwxr-xr-x 3 root wheel 1024 Jan 3 1994 usr</span> <span class="go">-rw-r--r-- 1 root root 312 Aug 1 1994 welcome.msg</span> <span class="go">'226 Transfer complete.'</span> <span class="gp">>>> </span><span class="n">ftps</span><span class="o">.</span><span class="n">quit</span><span class="p">()</span> <span class="go">>>></span> </pre></div> </div> </dd></dl> <dl class="exception"> <dt id="ftplib.error_reply"> <em class="property">exception </em><tt class="descclassname">ftplib.</tt><tt class="descname">error_reply</tt><a class="headerlink" href="#ftplib.error_reply" title="Permalink to this definition">¶</a></dt> <dd><p>Exception raised when an unexpected reply is received from the server.</p> </dd></dl> <dl class="exception"> <dt id="ftplib.error_temp"> <em class="property">exception </em><tt class="descclassname">ftplib.</tt><tt class="descname">error_temp</tt><a class="headerlink" href="#ftplib.error_temp" title="Permalink to this definition">¶</a></dt> <dd><p>Exception raised when an error code signifying a temporary error (response codes in the range 400–499) is received.</p> </dd></dl> <dl class="exception"> <dt id="ftplib.error_perm"> <em class="property">exception </em><tt class="descclassname">ftplib.</tt><tt class="descname">error_perm</tt><a class="headerlink" href="#ftplib.error_perm" title="Permalink to this definition">¶</a></dt> <dd><p>Exception raised when an error code signifying a permanent error (response codes in the range 500–599) is received.</p> </dd></dl> <dl class="exception"> <dt id="ftplib.error_proto"> <em class="property">exception </em><tt class="descclassname">ftplib.</tt><tt class="descname">error_proto</tt><a class="headerlink" href="#ftplib.error_proto" title="Permalink to this definition">¶</a></dt> <dd><p>Exception raised when a reply is received from the server that does not fit the response specifications of the File Transfer Protocol, i.e. begin with a digit in the range 1–5.</p> </dd></dl> <dl class="data"> <dt id="ftplib.all_errors"> <tt class="descclassname">ftplib.</tt><tt class="descname">all_errors</tt><a class="headerlink" href="#ftplib.all_errors" title="Permalink to this definition">¶</a></dt> <dd><p>The set of all exceptions (as a tuple) that methods of <a class="reference internal" href="#ftplib.FTP" title="ftplib.FTP"><tt class="xref py py-class docutils literal"><span class="pre">FTP</span></tt></a> instances may raise as a result of problems with the FTP connection (as opposed to programming errors made by the caller). This set includes the four exceptions listed above as well as <a class="reference internal" href="socket.html#socket.error" title="socket.error"><tt class="xref py py-exc docutils literal"><span class="pre">socket.error</span></tt></a> and <a class="reference internal" href="exceptions.html#exceptions.IOError" title="exceptions.IOError"><tt class="xref py py-exc docutils literal"><span class="pre">IOError</span></tt></a>.</p> </dd></dl> <div class="admonition-see-also admonition seealso"> <p class="first admonition-title">See also</p> <dl class="docutils"> <dt>Module <a class="reference internal" href="netrc.html#module-netrc" title="netrc: Loading of .netrc files."><tt class="xref py py-mod docutils literal"><span class="pre">netrc</span></tt></a></dt> <dd>Parser for the <tt class="file docutils literal"><span class="pre">.netrc</span></tt> file format. The file <tt class="file docutils literal"><span class="pre">.netrc</span></tt> is typically used by FTP clients to load user authentication information before prompting the user.</dd> </dl> <p class="last" id="index-3">The file <tt class="file docutils literal"><span class="pre">Tools/scripts/ftpmirror.py</span></tt> in the Python source distribution is a script that can mirror FTP sites, or portions thereof, using the <a class="reference internal" href="#module-ftplib" title="ftplib: FTP protocol client (requires sockets)."><tt class="xref py py-mod docutils literal"><span class="pre">ftplib</span></tt></a> module. It can be used as an extended example that applies this module.</p> </div> <div class="section" id="ftp-objects"> <span id="id1"></span><h2>20.8.1. FTP Objects<a class="headerlink" href="#ftp-objects" title="Permalink to this headline">¶</a></h2> <p>Several methods are available in two flavors: one for handling text files and another for binary files. These are named for the command which is used followed by <tt class="docutils literal"><span class="pre">lines</span></tt> for the text version or <tt class="docutils literal"><span class="pre">binary</span></tt> for the binary version.</p> <p><a class="reference internal" href="#ftplib.FTP" title="ftplib.FTP"><tt class="xref py py-class docutils literal"><span class="pre">FTP</span></tt></a> instances have the following methods:</p> <dl class="method"> <dt id="ftplib.FTP.set_debuglevel"> <tt class="descclassname">FTP.</tt><tt class="descname">set_debuglevel</tt><big>(</big><em>level</em><big>)</big><a class="headerlink" href="#ftplib.FTP.set_debuglevel" title="Permalink to this definition">¶</a></dt> <dd><p>Set the instance’s debugging level. This controls the amount of debugging output printed. The default, <tt class="docutils literal"><span class="pre">0</span></tt>, produces no debugging output. A value of <tt class="docutils literal"><span class="pre">1</span></tt> produces a moderate amount of debugging output, generally a single line per request. A value of <tt class="docutils literal"><span class="pre">2</span></tt> or higher produces the maximum amount of debugging output, logging each line sent and received on the control connection.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.connect"> <tt class="descclassname">FTP.</tt><tt class="descname">connect</tt><big>(</big><em>host</em><span class="optional">[</span>, <em>port</em><span class="optional">[</span>, <em>timeout</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP.connect" title="Permalink to this definition">¶</a></dt> <dd><p>Connect to the given host and port. The default port number is <tt class="docutils literal"><span class="pre">21</span></tt>, as specified by the FTP protocol specification. It is rarely needed to specify a different port number. This function should be called only once for each instance; it should not be called at all if a host was given when the instance was created. All other methods can only be used after a connection has been made.</p> <p>The optional <em>timeout</em> parameter specifies a timeout in seconds for the connection attempt. If no <em>timeout</em> is passed, the global default timeout setting will be used.</p> <p class="versionchanged"> <span class="versionmodified">Changed in version 2.6: </span><em>timeout</em> was added.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.getwelcome"> <tt class="descclassname">FTP.</tt><tt class="descname">getwelcome</tt><big>(</big><big>)</big><a class="headerlink" href="#ftplib.FTP.getwelcome" title="Permalink to this definition">¶</a></dt> <dd><p>Return the welcome message sent by the server in reply to the initial connection. (This message sometimes contains disclaimers or help information that may be relevant to the user.)</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.login"> <tt class="descclassname">FTP.</tt><tt class="descname">login</tt><big>(</big><span class="optional">[</span><em>user</em><span class="optional">[</span>, <em>passwd</em><span class="optional">[</span>, <em>acct</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP.login" title="Permalink to this definition">¶</a></dt> <dd><p>Log in as the given <em>user</em>. The <em>passwd</em> and <em>acct</em> parameters are optional and default to the empty string. If no <em>user</em> is specified, it defaults to <tt class="docutils literal"><span class="pre">'anonymous'</span></tt>. If <em>user</em> is <tt class="docutils literal"><span class="pre">'anonymous'</span></tt>, the default <em>passwd</em> is <tt class="docutils literal"><span class="pre">'anonymous@'</span></tt>. This function should be called only once for each instance, after a connection has been established; it should not be called at all if a host and user were given when the instance was created. Most FTP commands are only allowed after the client has logged in. The <em>acct</em> parameter supplies “accounting information”; few systems implement this.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.abort"> <tt class="descclassname">FTP.</tt><tt class="descname">abort</tt><big>(</big><big>)</big><a class="headerlink" href="#ftplib.FTP.abort" title="Permalink to this definition">¶</a></dt> <dd><p>Abort a file transfer that is in progress. Using this does not always work, but it’s worth a try.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.sendcmd"> <tt class="descclassname">FTP.</tt><tt class="descname">sendcmd</tt><big>(</big><em>command</em><big>)</big><a class="headerlink" href="#ftplib.FTP.sendcmd" title="Permalink to this definition">¶</a></dt> <dd><p>Send a simple command string to the server and return the response string.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.voidcmd"> <tt class="descclassname">FTP.</tt><tt class="descname">voidcmd</tt><big>(</big><em>command</em><big>)</big><a class="headerlink" href="#ftplib.FTP.voidcmd" title="Permalink to this definition">¶</a></dt> <dd><p>Send a simple command string to the server and handle the response. Return nothing if a response code corresponding to success (codes in the range 200–299) is received. Raise <a class="reference internal" href="#ftplib.error_reply" title="ftplib.error_reply"><tt class="xref py py-exc docutils literal"><span class="pre">error_reply</span></tt></a> otherwise.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.retrbinary"> <tt class="descclassname">FTP.</tt><tt class="descname">retrbinary</tt><big>(</big><em>command</em>, <em>callback</em><span class="optional">[</span>, <em>maxblocksize</em><span class="optional">[</span>, <em>rest</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP.retrbinary" title="Permalink to this definition">¶</a></dt> <dd><p>Retrieve a file in binary transfer mode. <em>command</em> should be an appropriate <tt class="docutils literal"><span class="pre">RETR</span></tt> command: <tt class="docutils literal"><span class="pre">'RETR</span> <span class="pre">filename'</span></tt>. The <em>callback</em> function is called for each block of data received, with a single string argument giving the data block. The optional <em>maxblocksize</em> argument specifies the maximum chunk size to read on the low-level socket object created to do the actual transfer (which will also be the largest size of the data blocks passed to <em>callback</em>). A reasonable default is chosen. <em>rest</em> means the same thing as in the <a class="reference internal" href="#ftplib.FTP.transfercmd" title="ftplib.FTP.transfercmd"><tt class="xref py py-meth docutils literal"><span class="pre">transfercmd()</span></tt></a> method.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.retrlines"> <tt class="descclassname">FTP.</tt><tt class="descname">retrlines</tt><big>(</big><em>command</em><span class="optional">[</span>, <em>callback</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP.retrlines" title="Permalink to this definition">¶</a></dt> <dd><p>Retrieve a file or directory listing in ASCII transfer mode. <em>command</em> should be an appropriate <tt class="docutils literal"><span class="pre">RETR</span></tt> command (see <a class="reference internal" href="#ftplib.FTP.retrbinary" title="ftplib.FTP.retrbinary"><tt class="xref py py-meth docutils literal"><span class="pre">retrbinary()</span></tt></a>) or a command such as <tt class="docutils literal"><span class="pre">LIST</span></tt>, <tt class="docutils literal"><span class="pre">NLST</span></tt> or <tt class="docutils literal"><span class="pre">MLSD</span></tt> (usually just the string <tt class="docutils literal"><span class="pre">'LIST'</span></tt>). <tt class="docutils literal"><span class="pre">LIST</span></tt> retrieves a list of files and information about those files. <tt class="docutils literal"><span class="pre">NLST</span></tt> retrieves a list of file names. On some servers, <tt class="docutils literal"><span class="pre">MLSD</span></tt> retrieves a machine readable list of files and information about those files. The <em>callback</em> function is called for each line with a string argument containing the line with the trailing CRLF stripped. The default <em>callback</em> prints the line to <tt class="docutils literal"><span class="pre">sys.stdout</span></tt>.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.set_pasv"> <tt class="descclassname">FTP.</tt><tt class="descname">set_pasv</tt><big>(</big><em>boolean</em><big>)</big><a class="headerlink" href="#ftplib.FTP.set_pasv" title="Permalink to this definition">¶</a></dt> <dd><p>Enable “passive” mode if <em>boolean</em> is true, other disable passive mode. (In Python 2.0 and before, passive mode was off by default; in Python 2.1 and later, it is on by default.)</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.storbinary"> <tt class="descclassname">FTP.</tt><tt class="descname">storbinary</tt><big>(</big><em>command</em>, <em>file</em><span class="optional">[</span>, <em>blocksize</em>, <em>callback</em>, <em>rest</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP.storbinary" title="Permalink to this definition">¶</a></dt> <dd><p>Store a file in binary transfer mode. <em>command</em> should be an appropriate <tt class="docutils literal"><span class="pre">STOR</span></tt> command: <tt class="docutils literal"><span class="pre">"STOR</span> <span class="pre">filename"</span></tt>. <em>file</em> is an open file object which is read until EOF using its <tt class="xref py py-meth docutils literal"><span class="pre">read()</span></tt> method in blocks of size <em>blocksize</em> to provide the data to be stored. The <em>blocksize</em> argument defaults to 8192. <em>callback</em> is an optional single parameter callable that is called on each block of data after it is sent. <em>rest</em> means the same thing as in the <a class="reference internal" href="#ftplib.FTP.transfercmd" title="ftplib.FTP.transfercmd"><tt class="xref py py-meth docutils literal"><span class="pre">transfercmd()</span></tt></a> method.</p> <p class="versionchanged"> <span class="versionmodified">Changed in version 2.1: </span>default for <em>blocksize</em> added.</p> <p class="versionchanged"> <span class="versionmodified">Changed in version 2.6: </span><em>callback</em> parameter added.</p> <p class="versionchanged"> <span class="versionmodified">Changed in version 2.7: </span><em>rest</em> parameter added.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.storlines"> <tt class="descclassname">FTP.</tt><tt class="descname">storlines</tt><big>(</big><em>command</em>, <em>file</em><span class="optional">[</span>, <em>callback</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP.storlines" title="Permalink to this definition">¶</a></dt> <dd><p>Store a file in ASCII transfer mode. <em>command</em> should be an appropriate <tt class="docutils literal"><span class="pre">STOR</span></tt> command (see <a class="reference internal" href="#ftplib.FTP.storbinary" title="ftplib.FTP.storbinary"><tt class="xref py py-meth docutils literal"><span class="pre">storbinary()</span></tt></a>). Lines are read until EOF from the open file object <em>file</em> using its <a class="reference internal" href="readline.html#module-readline" title="readline: GNU readline support for Python. (Unix)"><tt class="xref py py-meth docutils literal"><span class="pre">readline()</span></tt></a> method to provide the data to be stored. <em>callback</em> is an optional single parameter callable that is called on each line after it is sent.</p> <p class="versionchanged"> <span class="versionmodified">Changed in version 2.6: </span><em>callback</em> parameter added.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.transfercmd"> <tt class="descclassname">FTP.</tt><tt class="descname">transfercmd</tt><big>(</big><em>cmd</em><span class="optional">[</span>, <em>rest</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP.transfercmd" title="Permalink to this definition">¶</a></dt> <dd><p>Initiate a transfer over the data connection. If the transfer is active, send a <tt class="docutils literal"><span class="pre">EPRT</span></tt> or <tt class="docutils literal"><span class="pre">PORT</span></tt> command and the transfer command specified by <em>cmd</em>, and accept the connection. If the server is passive, send a <tt class="docutils literal"><span class="pre">EPSV</span></tt> or <tt class="docutils literal"><span class="pre">PASV</span></tt> command, connect to it, and start the transfer command. Either way, return the socket for the connection.</p> <p>If optional <em>rest</em> is given, a <tt class="docutils literal"><span class="pre">REST</span></tt> command is sent to the server, passing <em>rest</em> as an argument. <em>rest</em> is usually a byte offset into the requested file, telling the server to restart sending the file’s bytes at the requested offset, skipping over the initial bytes. Note however that RFC 959 requires only that <em>rest</em> be a string containing characters in the printable range from ASCII code 33 to ASCII code 126. The <a class="reference internal" href="#ftplib.FTP.transfercmd" title="ftplib.FTP.transfercmd"><tt class="xref py py-meth docutils literal"><span class="pre">transfercmd()</span></tt></a> method, therefore, converts <em>rest</em> to a string, but no check is performed on the string’s contents. If the server does not recognize the <tt class="docutils literal"><span class="pre">REST</span></tt> command, an <a class="reference internal" href="#ftplib.error_reply" title="ftplib.error_reply"><tt class="xref py py-exc docutils literal"><span class="pre">error_reply</span></tt></a> exception will be raised. If this happens, simply call <a class="reference internal" href="#ftplib.FTP.transfercmd" title="ftplib.FTP.transfercmd"><tt class="xref py py-meth docutils literal"><span class="pre">transfercmd()</span></tt></a> without a <em>rest</em> argument.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.ntransfercmd"> <tt class="descclassname">FTP.</tt><tt class="descname">ntransfercmd</tt><big>(</big><em>cmd</em><span class="optional">[</span>, <em>rest</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP.ntransfercmd" title="Permalink to this definition">¶</a></dt> <dd><p>Like <a class="reference internal" href="#ftplib.FTP.transfercmd" title="ftplib.FTP.transfercmd"><tt class="xref py py-meth docutils literal"><span class="pre">transfercmd()</span></tt></a>, but returns a tuple of the data connection and the expected size of the data. If the expected size could not be computed, <tt class="docutils literal"><span class="pre">None</span></tt> will be returned as the expected size. <em>cmd</em> and <em>rest</em> means the same thing as in <a class="reference internal" href="#ftplib.FTP.transfercmd" title="ftplib.FTP.transfercmd"><tt class="xref py py-meth docutils literal"><span class="pre">transfercmd()</span></tt></a>.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.nlst"> <tt class="descclassname">FTP.</tt><tt class="descname">nlst</tt><big>(</big><em>argument</em><span class="optional">[</span>, <em>...</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP.nlst" title="Permalink to this definition">¶</a></dt> <dd><p>Return a list of file names as returned by the <tt class="docutils literal"><span class="pre">NLST</span></tt> command. The optional <em>argument</em> is a directory to list (default is the current server directory). Multiple arguments can be used to pass non-standard options to the <tt class="docutils literal"><span class="pre">NLST</span></tt> command.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.dir"> <tt class="descclassname">FTP.</tt><tt class="descname">dir</tt><big>(</big><em>argument</em><span class="optional">[</span>, <em>...</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#ftplib.FTP.dir" title="Permalink to this definition">¶</a></dt> <dd><p>Produce a directory listing as returned by the <tt class="docutils literal"><span class="pre">LIST</span></tt> command, printing it to standard output. The optional <em>argument</em> is a directory to list (default is the current server directory). Multiple arguments can be used to pass non-standard options to the <tt class="docutils literal"><span class="pre">LIST</span></tt> command. If the last argument is a function, it is used as a <em>callback</em> function as for <a class="reference internal" href="#ftplib.FTP.retrlines" title="ftplib.FTP.retrlines"><tt class="xref py py-meth docutils literal"><span class="pre">retrlines()</span></tt></a>; the default prints to <tt class="docutils literal"><span class="pre">sys.stdout</span></tt>. This method returns <tt class="docutils literal"><span class="pre">None</span></tt>.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.rename"> <tt class="descclassname">FTP.</tt><tt class="descname">rename</tt><big>(</big><em>fromname</em>, <em>toname</em><big>)</big><a class="headerlink" href="#ftplib.FTP.rename" title="Permalink to this definition">¶</a></dt> <dd><p>Rename file <em>fromname</em> on the server to <em>toname</em>.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.delete"> <tt class="descclassname">FTP.</tt><tt class="descname">delete</tt><big>(</big><em>filename</em><big>)</big><a class="headerlink" href="#ftplib.FTP.delete" title="Permalink to this definition">¶</a></dt> <dd><p>Remove the file named <em>filename</em> from the server. If successful, returns the text of the response, otherwise raises <a class="reference internal" href="#ftplib.error_perm" title="ftplib.error_perm"><tt class="xref py py-exc docutils literal"><span class="pre">error_perm</span></tt></a> on permission errors or <a class="reference internal" href="#ftplib.error_reply" title="ftplib.error_reply"><tt class="xref py py-exc docutils literal"><span class="pre">error_reply</span></tt></a> on other errors.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.cwd"> <tt class="descclassname">FTP.</tt><tt class="descname">cwd</tt><big>(</big><em>pathname</em><big>)</big><a class="headerlink" href="#ftplib.FTP.cwd" title="Permalink to this definition">¶</a></dt> <dd><p>Set the current directory on the server.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.mkd"> <tt class="descclassname">FTP.</tt><tt class="descname">mkd</tt><big>(</big><em>pathname</em><big>)</big><a class="headerlink" href="#ftplib.FTP.mkd" title="Permalink to this definition">¶</a></dt> <dd><p>Create a new directory on the server.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.pwd"> <tt class="descclassname">FTP.</tt><tt class="descname">pwd</tt><big>(</big><big>)</big><a class="headerlink" href="#ftplib.FTP.pwd" title="Permalink to this definition">¶</a></dt> <dd><p>Return the pathname of the current directory on the server.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.rmd"> <tt class="descclassname">FTP.</tt><tt class="descname">rmd</tt><big>(</big><em>dirname</em><big>)</big><a class="headerlink" href="#ftplib.FTP.rmd" title="Permalink to this definition">¶</a></dt> <dd><p>Remove the directory named <em>dirname</em> on the server.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.size"> <tt class="descclassname">FTP.</tt><tt class="descname">size</tt><big>(</big><em>filename</em><big>)</big><a class="headerlink" href="#ftplib.FTP.size" title="Permalink to this definition">¶</a></dt> <dd><p>Request the size of the file named <em>filename</em> on the server. On success, the size of the file is returned as an integer, otherwise <tt class="docutils literal"><span class="pre">None</span></tt> is returned. Note that the <tt class="docutils literal"><span class="pre">SIZE</span></tt> command is not standardized, but is supported by many common server implementations.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.quit"> <tt class="descclassname">FTP.</tt><tt class="descname">quit</tt><big>(</big><big>)</big><a class="headerlink" href="#ftplib.FTP.quit" title="Permalink to this definition">¶</a></dt> <dd><p>Send a <tt class="docutils literal"><span class="pre">QUIT</span></tt> command to the server and close the connection. This is the “polite” way to close a connection, but it may raise an exception if the server responds with an error to the <tt class="docutils literal"><span class="pre">QUIT</span></tt> command. This implies a call to the <a class="reference internal" href="#ftplib.FTP.close" title="ftplib.FTP.close"><tt class="xref py py-meth docutils literal"><span class="pre">close()</span></tt></a> method which renders the <a class="reference internal" href="#ftplib.FTP" title="ftplib.FTP"><tt class="xref py py-class docutils literal"><span class="pre">FTP</span></tt></a> instance useless for subsequent calls (see below).</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP.close"> <tt class="descclassname">FTP.</tt><tt class="descname">close</tt><big>(</big><big>)</big><a class="headerlink" href="#ftplib.FTP.close" title="Permalink to this definition">¶</a></dt> <dd><p>Close the connection unilaterally. This should not be applied to an already closed connection such as after a successful call to <a class="reference internal" href="#ftplib.FTP.quit" title="ftplib.FTP.quit"><tt class="xref py py-meth docutils literal"><span class="pre">quit()</span></tt></a>. After this call the <a class="reference internal" href="#ftplib.FTP" title="ftplib.FTP"><tt class="xref py py-class docutils literal"><span class="pre">FTP</span></tt></a> instance should not be used any more (after a call to <a class="reference internal" href="#ftplib.FTP.close" title="ftplib.FTP.close"><tt class="xref py py-meth docutils literal"><span class="pre">close()</span></tt></a> or <a class="reference internal" href="#ftplib.FTP.quit" title="ftplib.FTP.quit"><tt class="xref py py-meth docutils literal"><span class="pre">quit()</span></tt></a> you cannot reopen the connection by issuing another <a class="reference internal" href="#ftplib.FTP.login" title="ftplib.FTP.login"><tt class="xref py py-meth docutils literal"><span class="pre">login()</span></tt></a> method).</p> </dd></dl> </div> <div class="section" id="ftp-tls-objects"> <h2>20.8.2. FTP_TLS Objects<a class="headerlink" href="#ftp-tls-objects" title="Permalink to this headline">¶</a></h2> <p><a class="reference internal" href="#ftplib.FTP_TLS" title="ftplib.FTP_TLS"><tt class="xref py py-class docutils literal"><span class="pre">FTP_TLS</span></tt></a> class inherits from <a class="reference internal" href="#ftplib.FTP" title="ftplib.FTP"><tt class="xref py py-class docutils literal"><span class="pre">FTP</span></tt></a>, defining these additional objects:</p> <dl class="attribute"> <dt id="ftplib.FTP_TLS.ssl_version"> <tt class="descclassname">FTP_TLS.</tt><tt class="descname">ssl_version</tt><a class="headerlink" href="#ftplib.FTP_TLS.ssl_version" title="Permalink to this definition">¶</a></dt> <dd><p>The SSL version to use (defaults to <em>TLSv1</em>).</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP_TLS.auth"> <tt class="descclassname">FTP_TLS.</tt><tt class="descname">auth</tt><big>(</big><big>)</big><a class="headerlink" href="#ftplib.FTP_TLS.auth" title="Permalink to this definition">¶</a></dt> <dd><p>Set up secure control connection by using TLS or SSL, depending on what specified in <a class="reference internal" href="#ftplib.FTP_TLS.ssl_version" title="ftplib.FTP_TLS.ssl_version"><tt class="xref py py-meth docutils literal"><span class="pre">ssl_version()</span></tt></a> attribute.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP_TLS.prot_p"> <tt class="descclassname">FTP_TLS.</tt><tt class="descname">prot_p</tt><big>(</big><big>)</big><a class="headerlink" href="#ftplib.FTP_TLS.prot_p" title="Permalink to this definition">¶</a></dt> <dd><p>Set up secure data connection.</p> </dd></dl> <dl class="method"> <dt id="ftplib.FTP_TLS.prot_c"> <tt class="descclassname">FTP_TLS.</tt><tt class="descname">prot_c</tt><big>(</big><big>)</big><a class="headerlink" href="#ftplib.FTP_TLS.prot_c" title="Permalink to this definition">¶</a></dt> <dd><p>Set up clear text data connection.</p> </dd></dl> </div> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h3><a href="../contents.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">20.8. <tt class="docutils literal"><span class="pre">ftplib</span></tt> — FTP protocol client</a><ul> <li><a class="reference internal" href="#ftp-objects">20.8.1. FTP Objects</a></li> <li><a class="reference internal" href="#ftp-tls-objects">20.8.2. FTP_TLS Objects</a></li> </ul> </li> </ul> <h4>Previous topic</h4> <p class="topless"><a href="httplib.html" title="previous chapter">20.7. <tt class="docutils literal"><span class="pre">httplib</span></tt> — HTTP protocol client</a></p> <h4>Next topic</h4> <p class="topless"><a href="poplib.html" title="next chapter">20.9. <tt class="docutils literal"><span class="pre">poplib</span></tt> — POP3 protocol client</a></p> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../bugs.html">Report a Bug</a></li> <li><a href="../_sources/library/ftplib.txt" rel="nofollow">Show Source</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="../search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="poplib.html" title="20.9. poplib — POP3 protocol client" >next</a> |</li> <li class="right" > <a href="httplib.html" title="20.7. httplib — HTTP protocol client" >previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="http://www.python.org/">Python</a> »</li> <li> <a href="../index.html">Python 2.7.5 documentation</a> » </li> <li><a href="index.html" >The Python Standard Library</a> »</li> <li><a href="internet.html" >20. Internet Protocols and Support</a> »</li> </ul> </div> <div class="footer"> © <a href="../copyright.html">Copyright</a> 1990-2020, Python Software Foundation. <br /> The Python Software Foundation is a non-profit corporation. <a href="http://www.python.org/psf/donations/">Please donate.</a> <br /> Last updated on Oct 13, 2020. <a href="../bugs.html">Found a bug</a>? <br /> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. </div> </body> </html>