Python部落)组织翻译,禁止转载,欢迎转发。
概述
本文向您展示如何在ftplib模块的帮助下在Python中使用FTP。
Ftplib
Python中的ftplib模块允许写Python程序自动化一些FTP任务,你可以很容易的连接到FTP服务器上取得文件,并且在本地处理。
为了在Python中使用ftplib模块,首先你要把它导入(import)你的脚本。
打开一个连接
为了在FTP服务器上“打开”一个连接,你必须创建一个对象。一旦连接建立(打开),你就可以使用ftplib模块中的方法了。
很多方法都有两种分类:一种来处理文本文件,另一种来处理二进制文件。你可以很容易的浏览目录结构,管理和下载文件。
如何使用?
程序首先连接到FTP服务器()并且接着使用LIST方法列出FTP服务器根目录下的文件和目录结构。
from ftplib import FTP
ftp = FTP("") # connect to host, default port
# user anonymous, passwd anonymous@
("LIST") # list directory contents
第二个程序使用电子邮件为anonymous@的“anonymous”用户打开“ftp.”的连接。
接着使用dir方法列出FTP服务器上的文件和目录。
dir方法的输出被存储到“files”变量中。
接着用print函数在屏幕上列出有哪些文件。
如果我想切换目录,我就用(path)来完成。
关闭FTP连接,使用quit方法。
import ftplib
ftp = ("ftp.", "anonymous", "anonymous@")
print "File List: "
files =
print files
("/pub/unix") #changing to /pub/unix
常见FTP方法
FTP.connect(host[, port[, timeout]])
使用指定的host和port来连接。
FTP协议规范的默认端口是21。
很少情况需要指定一个其它的端口号。
该方法在每一个实例中调用一次。
当创建时实例已经指定了host,就不该调用该方法。
一个连接建立后,所有别的方法才能使用。
可选的timeout参数指定了一个尝试连接的时候以秒来表示的超时。
如果没有timeout参数,将使用默认的是超时设置。
FTP.getwelcome
作为初始连接的回应,返回服务器发送的欢迎信息。
这个信息包含了一些免责声明或者一些与用户相关的帮助信息。
FTP.login([user[, passwd[, acct]]])
作为指定用户登录。
passed和acct参数是可选的,默认是空字符串。
如过没有指定用户,默认是“anonymous”。
如果用户数是“anonymous”,默认密码是“anonymous@”
在一个连接已经建立后,对于每一个实例来说该函数只能调用一次。
实例创建时,如果主机和用户已经指定,就不应该调用该函数了。
绝大多数命令在客户登陆后才能调用。
acct参数提供了“记账信息”,没有几个系统实现这个参数。
FTP.retrbinary(command, callback[, maxblocksize[, rest]])
使用二进制传输模式来得到一个文件。
命令应该是一个合适的RETR命令:“RETR filename”
callback函数在收到每一个数据块后会被调用,该函数使用一个string类型的接收到的数据块作为参数。
可选的maxblocksize参数指定了为做实际数据传输创建的底层socker对象读取的最大块的大小。
已经选择了合理的默认值。rest和在transfercmd中表示的东西是一样的。
FTP.retrlines(command[, callback])
返回一个使用ASCII传输模式列出的文件或者目录。
命令应该是个合适的RETR命令,或者是一个如LIST,NLST或者MLSD的命令。
LIST返回一个文件列表和关于这些文件的信息。
NLST返回一个文件名的列表。
在一些服务器上,MLSD返回一个机器可读的文件列表和关于这些文件的信息。
callback函数在得到每一行数据的时候调用,并且被传入一个移除了CRLF的接收行作为参数。
默认情况下callback将打印行到。
FTP.dir(argument[, ...])
生成一个就像LIST命令返回的一样的目录列表,并且打印到标准输出上。
可选参数是一个要列出信息的目录(默认是服务器的当前目录)。
多个参数可以被用来传入非标准的选项给LIST命令。
如果最后一个参数是个函数,该函数就会被用来作为retrlines的回调函数;默认打印到。
函数返回None。
FTP.delete(filename)
从服务器上删除名字为filename的文件。
如果删除成功,返回响应文字,否则生成一个权限错误(error_perm)或者别的错误(error_reply)。
FTP.cwd(pathname)
在服务器上设置当前目录。
FTP.mkd(pathname)
在服务器上创建新的目录。
FTP.pwd
返回服务器上当前目录的路径名。
FTP.quit
向服务器发送一个QUIT命令并且关闭连接。
这是关闭连接的一个“礼貌的”方式,但是如果服务器使用一个错误来响应QUIT命令的话,就会搞出一个异常。
这意味着调用close方法后会使FTP实例无效,接下来的调用也就没用了。
FTP.close
单方面关闭连接。
这个方法不应该应用到一个已经关闭的连接(比如一个已经成功地调用quit()的连接)上。
调用之后,FTP实例就不应该再使用了。
当调用close或者quit后,你就不能再次通过调用别的login方法来再次打开连接了。
如果需要更多地信息,请参考官方的Python文档。
英文原文:
译者:pyBean