How to use FTP in Python

来源:互联网 发布:java notify wait 编辑:程序博客网 时间:2024/05/09 21:24

Overview

This article will show how you can use FTP in Python with the help of theftplib module. 

Ftplib

The ftplib module in Python allows you to write Python programs that perform avariety of automated FTP jobs. You can easily connect to a FTP server to retrievefiles and process them locally.To use the ftplib module in Python, you first have to import it into your script. 

Open a Connection

To "open" a connection to the FTP Server, you have to create the object.Once the connection is made (opened), you can use the methods in the ftplibmodule.Several methods are available in two flavors: one for handling text files andanother for binary files.You can easily navigate the directory structure, manage and download files. 

How do I use it?

This program will first connect to a FTP server (ftp.cwi.nl) and then list thefiles and directories in the FTP server root directory using the LIST() method.
from ftplib import FTPftp = FTP('ftp.cwi.nl')   # connect to host, default portftp.login()               # user anonymous, passwd anonymous@ftp.retrlines('LIST')     # list directory contents 
Our second program opens a connection to 'ftp.sunet.se' as the user 'anonymous'with an email address of 'anonymous@sunet.se'It then lists the files and directories on the FTP server by using the dir()method.The output is saved to the 'files' variable. I then use print to see the files on screen. If I want I to change directory I would just use ftp.cwd(path) to do so.To close the FTP connection, use the quit() method.  
import ftplibftp = ftplib.FTP('ftp.sunet.se', 'anonymous', 'anonymous@sunet.se')print "File List: "files = ftp.dir()print filesftp.cwd("/pub/unix") #changing to /pub/unix

Common FTP Methods

FTP.connect(host[, port[, timeout]])
Connect to the given host and port. The default port number is 21, 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.The optional timeout parameter specifies a timeout in seconds for the connectionattempt. If no timeout is passed, the global default timeout setting will be used.
FTP.getwelcome()
Return the welcome message sent by the server in reply to the initial connection. This message sometimes contains disclaimers or help information that may berelevant to the user
FTP.login([user[, passwd[, acct]]])
Log in as the given user. The passwd and acct parameters are optional and default to the empty string. If no user is specified, it defaults to 'anonymous'. If user is 'anonymous', the default passwd is 'anonymous@'. 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 acct parameter supplies “accounting information”; few systems implement this.
FTP.retrbinary(command, callback[, maxblocksize[, rest]])
Retrieve a file in binary transfer mode. Command should be an appropriate RETR command: 'RETR filename'. The callback function is called for each block of data received, with a singlestring argument giving the data block. The optional maxblocksize argument specifies the maximum chunk size to read onthe low-level socket object created to do the actual transfer.A reasonable default is chosen. rest means the same thing as in the transfercmd()method.
FTP.retrlines(command[, callback])
Retrieve a file or directory listing in ASCII transfer mode. Command should be an appropriate RETR command or a command such as LIST, NLST or MLSD.LIST retrieves a list of files and information about those files. NLST retrieves a list of file names. On some servers, MLSD retrieves a machine readable list of files and informationabout those files. The callback function is called for each line with a string argument containingthe line with the trailing CRLF stripped. The default callback prints the line to sys.stdout.
FTP.dir(argument[, ...])
Produce a directory listing as returned by the LIST command, printing it tostandard output.The optional argument is a directory to list (default is the current serverdirectory). Multiple arguments can be used to pass non-standard options to the LIST command. If the last argument is a function, it is used as a callback function as for retrlines(); the default prints to sys.stdout. This method returns None.
FTP.delete(filename)
Remove the file named filename from the server. If successful, returns the text of the response, otherwise raises error_perm on permission errors or error_reply on other errors.
FTP.cwd(pathname)
Set the current directory on the server.
FTP.mkd(pathname)
Create a new directory on the server.
FTP.pwd()
Return the pathname of the current directory on the server.
FTP.quit()
Send a QUIT command to the server and close the connection. This is the “polite” way to close a connection, but it may raise an exception ifthe server responds with an error to the QUIT command. This implies a call to the close() method which renders the FTP instance uselessfor subsequent calls.
FTP.close()
Close the connection unilaterally. This should not be applied to an already closed connection such as after a successful call to quit(). After this call the FTP instance should not be used any more.After a call to close() or quit() you cannot reopen the connection by issuinganother login() method).
For more information, please see the official Python Documentation
0 0