ftplib模块--编写ftp客户端程序
Python的标准库ftplib模块提供了封装性极好的对FTP服务器的操作,该模块定义FTP类和一些相关的项目。FTP类实现了FTP协议的客户端。我们可以用该模块编写python程序,做一些FTP作业。
以下是该模块内一些函数:
class ftplib.FTP(host='', user='', passwd='', acct=''[, timeout])
该函数返回一个FTP类的实例。当host给出的时候,会自动调用connect(host)方法。如果user也给出,那么除了调用connect(host)方法,还会调用login(user,passwd,acct)方法(此时passwd和acct没有给出的时候,会默认为空),timeout是一个可选参数,该参数指定等待连接ftp服务器的秒数。
FTP提供了两类的函数,一类是针对操作文本文件的函数,该类函数形式通常以lines结尾;另一类是针对操作二进制文件的函数,该类函数形式以binary结尾。
FTP.set_debuglevel(level) :
设置该类实例的调试级别,用来控制调试信息输出的数量。缺省值为0,没有任何信息输出;值为1的时候会产生中等级别的输出,一般情况下是每个请求一行输出;当值为2的时候,会产生最多信息的输出,记录有关控制连接的输入与输出信息。
FTP.connect(host='', port=0[, timeout]) :
连接指定的目标,端口默认情况下为21。该函数每个实例只能调用一次,如果在FTP类实例化的时候指定了host参数,不应该调用该函数,因为在该类实例化的时候自动调用了该函数。在该函数调用之后才能调用其它函数。timeout参数的意义同函数ftplib.FTP(host='', user='', passwd='', acct=''[, timeout]) 。
FTP.getwelcome() :
在开始连接ftp服务器后,服务器会返回给我们一个welcome信息。
FTP.login(user='anonymous', passwd='', acct='') :
指定用户登录ftp服务器。passwd和acct是可选的参数,默认为空。如果没有指定用户名,默认为anonymous。如果用户名为anonymous,密码默认为anonymous@,该函数对于每个实例也只能调用一次。一旦建立连接,该实例就不能再调用该函数了。
FTP.abort() :
终止文件传输的过程。该函数不总是起作用,但是值得一试。
FTP.sendcmd(cmd) :
发送简单的命令到服务器,返回响应信息。
FTP.voidcmd(cmd) :
发送简单的命令给服务器并能处理响应。如果成功什么都不返回,否则产生error_reply异常。
FTP.retrbinary(cmd, callback, blocksize=8192, rest=None) :
以二进制模式获取文件,cmd是一个RETR命令,例如:'RETR filename'。当接收到每块数据的时候,会调用callback函数。block指定缓冲区的大小,rest和transfercmd()函数意义是相同的。
FTP.retrlines(cmd, callback=None) :
以文本模式获取文件和文件夹列表,cmd是 RETR 命令或者是 LIST ,NLST ,MLSD(通常是字符创 'LIST')。LIST 获取文件列表和有关这些文件的信息,NLST获取文件名的列表。在一些服务器上,MLSD获取机器可读的文件列表和有关这些文件的信息。每行输出作为ccallback的参数调用该函数,默认将每行打印到标准输出上。
FTP.set_pasv(boolean) :
如果为真,设为passive模式。默认为该模式。
FTP.storbinary(cmd, file, blocksize=8192, callback=None) :
以二进制模式上传文件,,cmd一般为STOR命令,例如:"STOR filename"。file是一个打开的文件对象,将打开文件的内容上传到服务器上并存储文件名为filename的文件。callback是一个可选参数,在每块数据发送后调用该函数。
FTP.storlines(cmd, file, callback=None) :
以文本模式上传文件,参数的意义同上,区别是该file对象利用readline()函数将文件内容传到服务器上,而上面是利用file的read()函数。
FTP.transfercmd(cmd, rest=None) :
初始化一个数据传输的一个连接。如果传输是active的,cmd参数指定EPRT或者PORT命令,接受连接。如果ftp服务器是passive的,cmd为EPSV或者PASV命令,连接服务器,启动传输命令,返回连接的socket。
FTP.ntransfercmd(cmd, rest=None) :
同上,区别是该函数返回一个数据连接和数据大小的元组。如果不能计算大小,会返回None。
FTP.nlst(argument[, ...]) :
返回NLST命令的文件名列表。参数的缺省参数文件夹名,默认为服务器当前文件夹。
FTP.dir(argument[, ...]) :
同上。
FTP.rename(fromname, toname) :
重命名文件
FTP.delete(filename) :
删除文件
FTP.cwd(pathname) :
设置服务器当前文件夹路径
FTP.mkd(pathname) :
创建文件夹
FTP.rmd(dirname) :
删除文件夹
FTP.size(filename) :
获取文件大小
FTP.quit() :
发送quit命令给服务器,结束连接。这是比较好的结束连接的方式,但是可能会产生异常。
FTP.close() :
结束连接。如果连接已经终止,不能调用该函数。调用该函数的实例也不能再继续使用。