使用资源:ftplib.FTP(通过from ftplib import FTP导入即可使用),ftplib模块定义了两个主要的类:FTP和FTP_TLS,FTP_TLS为FTP的子类,增加了部分接口
一般使用FTP的实例连接ftp服务器就足够使用了,ftp传输文件模式有text和binary两种。有以下几个主要方法
全部参数都是可选的,如果给定了host,FTP将自己调用connect(host[, port[, timeout]])方法连接ftp服务器,此时默认的port为21。如果给定了user,FTP会自动调用login([user[, passwd[, acct]]])方法登录ftp服务器。timeout的单位为秒
设置调试级别,0:没有调试信息输出,1:适度的调试信息,2或者更大的数字:最大化的调试信息
连接到host,默认的port为21。
注意:
1. 该方法只能调用一次,如果初始化FTP实例时指定了host参数则不需要调用该方法
2. 其他有关ftp操作的方法只能在调用该方法成功后才能执行
获取欢迎字符串
使用user,passwd登录,默认的user为'anonymous'(即匿名登录),此时passwd为'anonymous@',acct为’’;如果指定了user,则passwd和acct默认均为’’
注意:
1. 该方法只能调用一次,如果在初始化FTP实例时给定了user参数就不需要调用该方法
中止正在处理的文件,python2.7.6文档中提到:“Using this does not always work, but it’s worth a try.”
发送简单的命令字符串到ftp服务器,返回应答字符串
发送简单的命令字符串到ftp服务器,并处理回应。如果为成功回应码(200-299),则不返回任何信息,如果不是则抛出error_reply异常
command为’RETR filename’,callback为一个回调函数,接收一个参数,将命令执行结果的每个block传入进行相应的处理(比如可以传入open(filename,’wb’).write将服务器上的文件内容写入到本地的filename里面);maxblocksize和rest可以不指定,有自己的默认值
与retrbinary对应,处理text版本,支持更多的命令,主要有:
LIST:返回当前目录下的全部文件信息
NLST:返回当前目录下的全部文件名
MLSD:retrieves a machine readable list of files and information about those files
callback将处理命令执行结果的每一行(按CRLF分隔)
设定被动模式
将本地文件按binary方式上传到ftp服务器,此处的command应该为“STOR filename”,filename为保存到ftp服务器当前目录下后的文件名,file为open方法打开的文件对象(是指是调用file的read方法,直到遇到文件尾)。callback接收一个参数,将每个发送成功后block传入
按ASCII模式存放一个文件到ftp服务器,将调用file的readline方法读取全部的行直到文件结束符。callback回调函数接收一个参数处理readline读取到的数据(发送成功后)
注意:上传文件到ftp服务器涉及到写权限,有以下两点:
1. 当前路径的权限,可以通过命令“chmod -R 777 currentDir”
2. selinux问题,按下图解决
Figure 7selinux导致文件无法上传到ftp服务器问题解决
后续更新
后续更新
与retrlines(command[, callback])传入NSLT参数返回结果一致
列出指定目录(默认为当前目录)下全部文件的信息
重命名文件
删除文件
设定ftp服务器上的当前工作目录
创建目录
打印当前目录
删除目录
获取文件大小,单位:byte,成功返回int,否则返回None(SIZE命令不是标准的)
发送QUIT命令到ftp服务器,关闭连接,可能会抛出异常
关闭连接,不应该对一个已经成功关闭的实例上(例如已经成功执行了quit方法的实例)