1 \section{\module{ftplib
} ---
4 \declaremodule{standard
}{ftplib
}
5 \modulesynopsis{FTP protocol client (requires sockets).
}
8 This module defines the class
\class{FTP
} and a few related items.
9 The
\class{FTP
} class implements the client side of the FTP
10 protocol.
\indexii{FTP
}{protocol
} You can use this to write Python
11 programs that perform a variety of automated FTP jobs, such as
12 mirroring other ftp servers. It is also used by the module
13 \refmodule{urllib
} to handle URLs that use FTP. For more information
14 on FTP (File Transfer Protocol), see Internet
\rfc{959}.
16 Here's a sample session using the
\module{ftplib
} module:
19 >>> from ftplib import FTP
20 >>> ftp = FTP('ftp.cwi.nl') # connect to host, default port
21 >>> ftp.login() # user anonymous, passwd user@hostname
22 >>> ftp.retrlines('LIST') # list directory contents
24 drwxrwsr-x
5 ftp-usr pdmaint
1536 Mar
20 09:
48 .
25 dr-xr-srwt
105 ftp-usr pdmaint
1536 Mar
21 14:
32 ..
26 -rw-r--r--
1 ftp-usr pdmaint
5305 Mar
20 09:
48 INDEX
30 >>> ftp.retrbinary('RETR README', open('README', 'wb').write)
31 '
226 Transfer complete.'
35 The module defines the following items:
37 \begin{classdesc
}{FTP
}{\optional{host
\optional{, user
\optional{,
38 passwd
\optional{, acct
}}}}}
39 Return a new instance of the
\class{FTP
} class. When
40 \var{host
} is given, the method call
\code{connect(
\var{host
})
} is
41 made. When
\var{user
} is given, additionally the method call
42 \code{login(
\var{user
},
\var{passwd
},
\var{acct
})
} is made (where
43 \var{passwd
} and
\var{acct
} default to the empty string when not given).
46 \begin{datadesc
}{all_errors
}
47 The set of all exceptions (as a tuple) that methods of
\class{FTP
}
48 instances may raise as a result of problems with the FTP connection
49 (as opposed to programming errors made by the caller). This set
50 includes the four exceptions listed below as well as
51 \exception{socket.error
} and
\exception{IOError
}.
54 \begin{excdesc
}{error_reply
}
55 Exception raised when an unexpected reply is received from the server.
58 \begin{excdesc
}{error_temp
}
59 Exception raised when an error code in the range
400--
499 is received.
62 \begin{excdesc
}{error_perm
}
63 Exception raised when an error code in the range
500--
599 is received.
66 \begin{excdesc
}{error_proto
}
67 Exception raised when a reply is received from the server that does
68 not begin with a digit in the range
1--
5.
73 \seemodule{netrc
}{Parser for the
\file{.netrc
} file format. The file
74 \file{.netrc
} is typically used by FTP clients to
75 load user authentication information before prompting
77 \seetext{The file
\file{Tools/scripts/ftpmirror.py
}\index{ftpmirror.py
}
78 in the Python source distribution is a script that can mirror
79 FTP sites, or portions thereof, using the
\module{ftplib
} module.
80 It can be used as an extended example that applies this module.
}
84 \subsection{FTP Objects
\label{ftp-objects
}}
86 Several methods are available in two flavors: one for handling text
87 files and another for binary files. These are named for the command
88 which is used followed by
\samp{lines
} for the text version or
89 \samp{binary
} for the binary version.
91 \class{FTP
} instances have the following methods:
93 \begin{methoddesc
}{set_debuglevel
}{level
}
94 Set the instance's debugging level. This controls the amount of
95 debugging output printed. The default,
\code{0}, produces no
96 debugging output. A value of
\code{1} produces a moderate amount of
97 debugging output, generally a single line per request. A value of
98 \code{2} or higher produces the maximum amount of debugging output,
99 logging each line sent and received on the control connection.
102 \begin{methoddesc
}{connect
}{host
\optional{, port
}}
103 Connect to the given host and port. The default port number is
\code{21}, as
104 specified by the FTP protocol specification. It is rarely needed to
105 specify a different port number. This function should be called only
106 once for each instance; it should not be called at all if a host was
107 given when the instance was created. All other methods can only be
108 used after a connection has been made.
111 \begin{methoddesc
}{getwelcome
}{}
112 Return the welcome message sent by the server in reply to the initial
113 connection. (This message sometimes contains disclaimers or help
114 information that may be relevant to the user.)
117 \begin{methoddesc
}{login
}{\optional{user
\optional{, passwd
\optional{, acct
}}}}
118 Log in as the given
\var{user
}. The
\var{passwd
} and
\var{acct
}
119 parameters are optional and default to the empty string. If no
120 \var{user
} is specified, it defaults to
\code{'anonymous'
}. If
121 \var{user
} is
\code{'anonymous'
}, the default
\var{passwd
} is
122 \samp{\var{realuser
}@
\var{host
}} where
\var{realuser
} is the real user
123 name (glanced from the
\envvar{LOGNAME
} or
\envvar{USER
} environment
124 variable) and
\var{host
} is the hostname as returned by
125 \function{socket.gethostname()
}. This function should be called only
126 once for each instance, after a connection has been established; it
127 should not be called at all if a host and user were given when the
128 instance was created. Most FTP commands are only allowed after the
129 client has logged in.
132 \begin{methoddesc
}{abort
}{}
133 Abort a file transfer that is in progress. Using this does not always
134 work, but it's worth a try.
137 \begin{methoddesc
}{sendcmd
}{command
}
138 Send a simple command string to the server and return the response
142 \begin{methoddesc
}{voidcmd
}{command
}
143 Send a simple command string to the server and handle the response.
144 Return nothing if a response code in the range
200--
299 is received.
145 Raise an exception otherwise.
148 \begin{methoddesc
}{retrbinary
}{command, callback
\optional{, maxblocksize
}}
149 Retrieve a file in binary transfer mode.
\var{command
} should be an
150 appropriate
\samp{RETR
} command, i.e.\
\code{'RETR
\var{filename
}'
}.
151 The
\var{callback
} function is called for each block of data received,
152 with a single string argument giving the data block.
153 The optional
\var{maxblocksize
} argument specifies the maximum chunk size to
154 read on the low-level socket object created to do the actual transfer
155 (which will also be the largest size of the data blocks passed to
156 \var{callback
}). A reasonable default is chosen.
159 \begin{methoddesc
}{retrlines
}{command
\optional{, callback
}}
160 Retrieve a file or directory listing in
\ASCII{} transfer mode.
161 \var{command
} should be an appropriate
\samp{RETR
} command (see
162 \method{retrbinary()
} or a
\samp{LIST
} command (usually just the string
163 \code{'LIST'
}). The
\var{callback
} function is called for each line,
164 with the trailing CRLF stripped. The default
\var{callback
} prints
165 the line to
\code{sys.stdout
}.
168 \begin{methoddesc
}{set_pasv
}{boolean
}
169 Enable ``passive'' mode if
\var{boolean
} is true, other disable
173 \begin{methoddesc
}{storbinary
}{command, file, blocksize
}
174 Store a file in binary transfer mode.
\var{command
} should be an
175 appropriate
\samp{STOR
} command, i.e.\
\code{"STOR
\var{filename
}"
}.
176 \var{file
} is an open file object which is read until
\EOF{} using its
177 \method{read()
} method in blocks of size
\var{blocksize
} to provide the
181 \begin{methoddesc
}{storlines
}{command, file
}
182 Store a file in
\ASCII{} transfer mode.
\var{command
} should be an
183 appropriate
\samp{STOR
} command (see
\method{storbinary()
}). Lines are
184 read until
\EOF{} from the open file object
\var{file
} using its
185 \method{readline()
} method to provide the data to be stored.
188 \begin{methoddesc
}{transfercmd
}{cmd
}
189 Initiate a transfer over the data connection. If the transfer is
190 active, send a
\samp{PORT
} command and the transfer command specified
191 by
\var{cmd
}, and accept the connection. If the server is passive,
192 send a
\samp{PASV
} command, connect to it, and start the transfer
193 command. Either way, return the socket for the connection.
196 \begin{methoddesc
}{ntransfercmd
}{cmd
}
197 Like
\method{transfercmd()
}, but returns a tuple of the data
198 connection and the expected size of the data. If the expected size
199 could not be computed,
\code{None
} will be returned as the expected
203 \begin{methoddesc
}{nlst
}{argument
\optional{,
\ldots}}
204 Return a list of files as returned by the
\samp{NLST
} command. The
205 optional
\var{argument
} is a directory to list (default is the current
206 server directory). Multiple arguments can be used to pass
207 non-standard options to the
\samp{NLST
} command.
210 \begin{methoddesc
}{dir
}{argument
\optional{,
\ldots}}
211 Produce a directory listing as returned by the
\samp{LIST
} command,
212 printing it to standard output. The optional
\var{argument
} is a
213 directory to list (default is the current server directory). Multiple
214 arguments can be used to pass non-standard options to the
\samp{LIST
}
215 command. If the last argument is a function, it is used as a
216 \var{callback
} function as for
\method{retrlines()
}; the default
217 prints to
\code{sys.stdout
}. This method returns
\code{None
}.
220 \begin{methoddesc
}{rename
}{fromname, toname
}
221 Rename file
\var{fromname
} on the server to
\var{toname
}.
224 \begin{methoddesc
}{delete
}{filename
}
225 Remove the file named
\var{filename
} from the server. If successful,
226 returns the text of the response, otherwise raises
227 \exception{error_perm
} on permission errors or
228 \exception{error_reply
} on other errors.
231 \begin{methoddesc
}{cwd
}{pathname
}
232 Set the current directory on the server.
235 \begin{methoddesc
}{mkd
}{pathname
}
236 Create a new directory on the server.
239 \begin{methoddesc
}{pwd
}{}
240 Return the pathname of the current directory on the server.
243 \begin{methoddesc
}{rmd
}{dirname
}
244 Remove the directory named
\var{dirname
} on the server.
247 \begin{methoddesc
}{size
}{filename
}
248 Request the size of the file named
\var{filename
} on the server. On
249 success, the size of the file is returned as an integer, otherwise
250 \code{None
} is returned. Note that the
\samp{SIZE
} command is not
251 standardized, but is supported by many common server implementations.
254 \begin{methoddesc
}{quit
}{}
255 Send a
\samp{QUIT
} command to the server and close the connection.
256 This is the ``polite'' way to close a connection, but it may raise an
257 exception of the server reponds with an error to the
258 \samp{QUIT
} command. This implies a call to the
\method{close()
}
259 method which renders the
\class{FTP
} instance useless for subsequent
263 \begin{methoddesc
}{close
}{}
264 Close the connection unilaterally. This should not be applied to an
265 already closed connection (e.g.\ after a successful call to
266 \method{quit()
}. After this call the
\class{FTP
} instance should not
267 be used any more (i.e., after a call to
\method{close()
} or
268 \method{quit()
} you cannot reopen the connection by issueing another
269 \method{login()
} method).