简单用法
交互式的一个示例
>>> from ftplib import FTP
>>> f=FTP('127.0.0.1')
>>> f.login(user='anonymous',passwd='')
'230 Login successful.'
>>> f.dir()
drwxr-xr-x 2 0 0 45 Jan 09 08:35 pub
>>> f.dir('pub')
-rw-r--r-- 1 0 0 0 Jan 09 08:35 1.txt
-rw-r--r-- 1 0 0 0 Jan 09 08:35 2.txt
-rw-r--r-- 1 0 0 0 Jan 09 08:35 3.txt
>>> f.quit()
'221 Goodbye.'
ftplib.FTP类方法
方法 | 描述 |
---|---|
dir(argument[, …]) | 显示path目录里的内容,可选参数cb是一个回调函数,会传递给retrlines()方法 |
nlst(argument[, …]) | 与dir()类似,返回的文件名列表,而不是显示这些文件文件名 |
rmd(dirname) | 删除服务器上名为dirname的目录 |
retrbinary(cmd, callback, blocksize=8192, rest=None) | 与retrlines()类似,只是这个指令处理二进制文件,回调函数cb用于处理每一块下载的数据 |
retrlines(cmd, callback=None) | 给定FTP命令(如“RETR filename”),用于下载文本文件,可选的回调函数cb用于处理文件的每一行 |
storbinary(cmd, fp, blocksize=8192, callback=None, rest=None) | 与storlines()类似,只是这个指令处理二进制文件,要给定一个文件对象f,上传块大小bs默认为8kb |
storlines(cmd, fp, callback=None) | 给定FTP命令(如“STOR filename”),用来上传文本文件,要给定一个文件对象f |
rename(fromname, toname) | 将服务器上的文件fromname重命名为toname。 |
delete(filename) | 从服务器中删除名为filename的文件。如果成功,则返回响应的文本,否则会引发error_perm权限错误或 error_reply其他错误。 |
cwd(pathname) | 在服务器上设置当前目录 |
mkd(pathname) | 在服务器上创建一个新目录。 |
pwd() | 返回服务器上当前目录的路径名。 |
quit() | 关闭连接 |
客户端FTP示例程序
import ftplib
import os
import socket
HOST='192.168.253.128' #这是我自己搭建的ftp服务器
DIRN='pub' #下载文件的目录
FILE='1.txt' #下载的文件
def main():
try:
f=ftplib.FTP(HOST)
except (socket.error,socket.gaierror) as e:
print('ERROR:cannot reach "%s" % HOST')
return
print('*** Connected to host "%s"' % HOST)
try:
f.login()
except ftplib.error_perm:
print('ERROR:cannot login anonymously')
f.quit()
return
print('*** Logged in as "anonymous"')
try:
f.cwd(DIRN)
except ftplib.error_perm:
print('ERROR:cannot CD to "%s" ' % DIRN)
f.quit()
return
print('*** Change to %s to CWD' % FILE)
try:
f.retrbinary('RETR %s' % FILE , open(FILE,'wb').write)
except ftplib.error_perm:
print('ERROR: cannot read file "%s"' % FILE)
os.unlink(FILE)
else:
print('Downloaded "%s" to CWD' %FILE)
f.quit()
if __name__ == '__main__':
main()
参考文档 https://docs.python.org/3/library/ftplib.html
参考书籍 《python核心编程》