ftplib是 Python的内置的一个标准模块,它提供了极强大的对FTP服务器的操作,通过它我们可以连接并操作FTP服务端,开始练习:

一、导入模块并进行连接

>>> from ftplib import FTP >>> ftp = FTP(‘ftp.yabogo.com’) >>> ftp.login(‘yourloginname’,'password’)

FTP登录成功

连接到FTP可还有如下形式:

1、实例化并直接连接,ftp=FTP(host=”, user=”, passwd=”, acct=”, timeout=”)

2、先实例ftp=FTP(), 再使用 connect(host=”, port=0, timeout=-999)连接,最后login(user=”, passwd=”)

二、查看目录文件或更改目录

>>> ftp.retrlines(‘LIST’)

1、retrlines(cmd)是以文本形式查看当前目录文件,可用cmd:RETR, LIST, NLST, MLSD

2、如果要指定查看某个目录的文件列表,可以用dir(dirname) ,dirname是可选参数,默认是当前目录;

3、cwd(dirname), 更改目录! Change to a directory.

三、查看文件的大小

>>> ftp.size(‘yabogo_logo.gif’) 2452

四、ftp上传一个文件

>>> fp=open(‘F:/test.php’,'rb’)
>>> ftp.storbinary(‘STOR test.php’,fp)

二进上传文件成功

storbinary( cmd, fp, blocksize=8192, callback=None, rest=None)
Args:
          cmd: A STOR command.
          fp: A file-like object with a read(num_bytes) method.
          blocksize: The maximum data size to read from fp and send over
                     the connection at once.  [default: 8192]
          callback: An optional single parameter callable that is called on
                    on each block of data after it is sent.  [default: None]
          rest: Passed to transfercmd().  [default: None]

        Returns:
          The response code.


五、退出关闭,并退出FTP

>>> ftp.quit() ’221 Goodbye, logging out.’

ftplib有很多可用的方法,导入模块后可通过help()查看帮助信息。

>>> from ftplib import FTP
 >>> ftp=FTP('ftp.python.org')
 >>> ftp.login()
 '230 Login successful.'
 >>> ftp.dir()
 drwxrwxr-x 7 1004 1004 512 Aug 13 01:35 pub
 >>> ftp.cwd('pub')
 '250 Directory successfully changed.'
 >>> ftp.dir()
 drwxrwxr-x 5 1000 1004 1024 Dec 24 11:04 docs.python.org
 drwxrwsr-x 2 1002 1004 512 Oct 12 2001 jython
 lrwx------ 1 0 1003 25 Aug 03 2001 python -> www.python.org/ftp/pythondrwxr-xr-x 9 1018 1004 512 Feb 02 03:44 pyvault
 drwxr-xr-x 2 1005 1004 512 May 06 2003 tmp
 drwxrwsr-x 59 1004 1004 3072 Feb 03 14:58 http://www.python.org/>>> ftp.quit()
 '221 Goodbye.'

下面一个下载文件的示例

#!/usr/bin/env python

 #author:Jims of  
   http://www.ringkee.com/ 
   
#create date: 2005/02/05
 #description: Using ftplib module download a file from a ftp server.

 from ftplib import FTP

 ftp=FTP()

 ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
 ftp.connect('ftp_server','port') #连接
 ftp.login('username','password') #登录,如果匿名登录则用空串代替即可

 print ftp.getwelcome() #显示ftp服务器欢迎信息
 ftp.cwd('xxx/xxx/') #选择操作目录
 bufsize = 1024 #设置缓冲块大小
 filename='dog.jpg' 
 file_handler = open(filename,'wb').write #以写模式在本地打开文件
 ftp.retrbinary('RETR dog.jpg',file_handler,bufsize) #接收服务器上文件并写入本地文件
 ftp.set_debuglevel(0) #关闭调试

 ftp.quit() #退出ftp服务器


下面一个上传文件的示例,要成功运行该脚本,需在ftp服务器上有上传文件的权限。

#!/usr/bin/env python

 #author:Jims of  
   http://www.ringkee.com/ 
   
#create date: 2005/02/05
 #description: Using ftplib module upload a file to a ftp server.

 from ftplib import FTP

 ftp=FTP()

 ftp.set_debuglevel(2)
 ftp.connect('ftp_server','port')
 ftp.login('username','password')

 print ftp.getwelcome()
 ftp.cwd('xxx/xxx/')
 bufsize = 1024
 filename='dog.jpg'
 file_handler = open(filename,'rb')
 ftp.storbinary('STOR dog.jpg',file_handler,bufsize) #上传文件
 ftp.set_debuglevel(0)

 file_handler.close() #关闭文件
 ftp.quit()