python访问ftp

来源:互联网 发布:程序员 英文面试 编辑:程序博客网 时间:2024/05/21 20:28

python访问ftp服务器

使用资源:ftplib.FTP(通过from ftplib import FTP导入即可使用),ftplib模块定义了两个主要的类:FTPFTP_TLS,FTP_TLS为FTP的子类,增加了部分接口

FTP class

一般使用FTP的实例连接ftp服务器就足够使用了,ftp传输文件模式有textbinary两种。有以下几个主要方法

FTP([host[, user[, passwd[, acct[, timeout]]]]])

全部参数都是可选的,如果给定了hostFTP将自己调用connect(host[, port[, timeout]])方法连接ftp服务器,此时默认的port为21。如果给定了user,FTP会自动调用login([user[, passwd[, acct]]])方法登录ftp服务器。timeout的单位为秒

set_debuglevel(level)

设置调试级别,0:没有调试信息输出,1:适度的调试信息,2或者更大的数字:最大化的调试信息

connect(host[, port[, timeout]])

连接到host,默认的port21

注意:

1. 该方法只能调用一次,如果初始化FTP实例时指定了host参数则不需要调用该方法

2. 其他有关ftp操作的方法只能在调用该方法成功后才能执行

getwelcome()

获取欢迎字符串

login([user[, passwd[, acct]]])

使用userpasswd登录,默认的user'anonymous'(即匿名登录),此时passwd'anonymous@',acct’’;如果指定了user,则passwdacct默认均为’’

注意:

1. 该方法只能调用一次,如果在初始化FTP实例时给定了user参数就不需要调用该方法

abort()

中止正在处理的文件,python2.7.6文档中提到:“Using this does not always work, but it’s worth a try.”

sendcmd(command)

发送简单的命令字符串到ftp服务器,返回应答字符串

voidcmd(command)

发送简单的命令字符串到ftp服务器,并处理回应。如果为成功回应码(200-299),则不返回任何信息,如果不是则抛出error_reply异常

retrbinary(command, callback[, maxblocksize[, rest]])

command’RETR filename’,callback为一个回调函数,接收一个参数,将命令执行结果的每个block传入进行相应的处理(比如可以传入open(filename,’wb’).write将服务器上的文件内容写入到本地的filename里面);maxblocksizerest可以不指定,有自己的默认值

retrlines(command[, callback])

与retrbinary对应,处理text版本,支持更多的命令,主要有:

LIST:返回当前目录下的全部文件信息

NLST:返回当前目录下的全部文件名

MLSD:retrieves a machine readable list of files and information about those files

callback将处理命令执行结果的每一行(按CRLF分隔)

set_pasv(boolean)

设定被动模式

storbinary(command, file[, blocksize, callback, rest])

将本地文件按binary方式上传到ftp服务器,此处的command应该为“STOR filename”,filename为保存到ftp服务器当前目录下后的文件名,fileopen方法打开的文件对象(是指是调用fileread方法,直到遇到文件尾)。callback接收一个参数,将每个发送成功后block传入

storlines(command, file[, callback])

按ASCII模式存放一个文件到ftp服务器,将调用filereadline方法读取全部的行直到文件结束符。callback回调函数接收一个参数处理readline读取到的数据(发送成功后)

注意:上传文件到ftp服务器涉及到写权限,有以下两点:

1. 当前路径的权限,可以通过命令“chmod -R 777 currentDir

2. selinux问题,按下图解决

 

Figure 7selinux导致文件无法上传到ftp服务器问题解决

transfercmd(cmd[, rest])

后续更新

ntransfercmd(cmd[, rest])

后续更新

nlst(argument[, ...])

与retrlines(command[, callback])传入NSLT参数返回结果一致

dir(argument[, ...])

列出指定目录(默认为当前目录)下全部文件的信息

rename(fromname, toname)

重命名文件

delete(filename)

删除文件

cwd(pathname)

设定ftp服务器上的当前工作目录

mkd(pathname)

创建目录

pwd()

打印当前目录

rmd(dirname)

删除目录

size(filename)

获取文件大小,单位:byte,成功返回int,否则返回NoneSIZE命令不是标准的)

quit()

发送QUIT命令到ftp服务器,关闭连接,可能会抛出异常

close()

关闭连接,不应该对一个已经成功关闭的实例上(例如已经成功执行了quit方法的实例)

0 0
原创粉丝点击