- Python-网络编程
- Python-网络简介
- Python-网络环境
- Python - 互联网协议
- Python-IP 地址
- Python-DNS 查找
- Python-路由
- Python - HTTP 请求
- Python-HTTP 响应
- Python - HTTP 标头
- Python - 自定义 HTTP 请求
- Python - 请求状态代码
- Python-HTTP 身份验证
- Python - HTTP 数据下载
- Python - 连接重用
- Python - 网络接口
- Python-套接字编程
- Python-HTTP 客户端
- Python-HTTP 服务器
- Python - 构建 URL
- Python - Web表单提交
- Python - 数据库和 SQL
- Python-远程登录
- Python - 电子邮件消息
- Python-SMTP
- Python-POP3
- Python-IMAP
- Python-SSH
- Python-FTP
- Python-SFTP
- Python - Web 服务器
- Python-上传数据
- Python-代理服务器
- Python - 目录列表
- Python-远程过程调用
- Python - RPC JSON 服务器
- Python - 谷歌地图
- Python - RSS 源
Python-FTP
FTP或文件传输协议是一种众所周知的网络协议,用于在网络中的计算机之间传输文件。它是在客户端服务器架构上创建的,可以与用户身份验证一起使用。它也可以在没有身份验证的情况下使用,但这会降低安全性。FTP 连接维护当前工作目录和其他标志,每次传输都需要一个辅助连接来传输数据。最常见的 Web 浏览器可以检索 FTP 服务器上托管的文件。
FTP 类中的方法
在 python 中,我们使用ftplib模块,它具有以下所需的方法来列出我们将传输文件的文件。
方法 | 描述 |
---|---|
密码() | 当前工作目录。 |
CWD() | 将当前工作目录更改为路径。 |
dir([路径[,...[,cb]]) | 显示路径的目录列表。可选的回调 cb 传递给 retrlines()。 |
斯托林斯(cmd,f) | 使用给定的 FTP 命令上传文本文件 - 例如,STOR 文件名。 |
storbinary(cmd,f[, bs=8192]) | 与 storlines() 类似,但用于二进制文件。 |
删除(路径) | 删除位于路径的远程文件。 |
mkd(目录) | 创建远程目录。 |
异常 ftplib.error_temp | 当收到表示临时错误的错误代码(响应代码在 400–499 范围内)时引发异常。 |
异常 ftplib.error_perm | 当收到表示永久错误的错误代码(响应代码在 500–599 范围内)时引发异常。 |
连接(主机[,端口[,超时]]) | 连接到给定的主机和端口。默认端口号是 21,由 FTP 协议指定。 |
辞职() | 关闭连接并退出。 |
下面是上述一些方法的示例。
列出文件
下面的示例使用匿名登录 ftp 服务器并列出当前目录的内容。它处理文件和目录的名称并将它们存储为列表。然后将它们打印出来。
import ftplib ftp = ftplib.FTP("ftp.nluug.nl") ftp.login("anonymous", "ftplib-example-1") data = [] ftp.dir(data.append) ftp.quit() for line in data: print "-", line
当我们运行上面的程序时,我们得到以下输出 -
- lrwxrwxrwx 1 0 0 1 Nov 13 2012 ftp -> . - lrwxrwxrwx 1 0 0 3 Nov 13 2012 mirror -> pub - drwxr-xr-x 23 0 0 4096 Nov 27 2017 pub - drwxr-sr-x 88 0 450 4096 May 04 19:30 site - drwxr-xr-x 9 0 0 4096 Jan 23 2014 vol
更改目录
下面的程序使用 ftplib 模块中可用的 cwd 方法来更改目录,然后获取所需的内容。
import ftplib ftp = ftplib.FTP("ftp.nluug.nl") ftp.login("anonymous", "ftplib-example-1") data = [] ftp.cwd('/pub/') change directory to /pub/ ftp.dir(data.append) ftp.quit() for line in data: print "-", line
当我们运行上面的程序时,我们得到以下输出 -
- lrwxrwxrwx 1 504 450 14 Nov 02 2007 FreeBSD -> os/BSD/FreeBSD - lrwxrwxrwx 1 504 450 20 Nov 02 2007 ImageMagick -> graphics/ImageMagick - lrwxrwxrwx 1 504 450 13 Nov 02 2007 NetBSD -> os/BSD/NetBSD - lrwxrwxrwx 1 504 450 14 Nov 02 2007 OpenBSD -> os/BSD/OpenBSD - -rw-rw-r-- 1 504 450 932 Jan 04 2015 README.nluug - -rw-r--r-- 1 504 450 2023 May 03 2005 WhereToFindWhat.txt - drwxr-sr-x 2 0 450 4096 Jan 26 2008 av - drwxrwsr-x 2 0 450 4096 Aug 12 2004 comp
获取文件
获取如上所示的文件列表后,我们可以使用getfile方法获取特定文件。此方法将文件的副本从远程系统移动到启动 ftp 连接的本地系统。
import ftplib import sys def getFile(ftp, filename): try: ftp.retrbinary("RETR " + filename ,open(filename, 'wb').write) except: print "Error" ftp = ftplib.FTP("ftp.nluug.nl") ftp.login("anonymous", "ftplib-example-1") ftp.cwd('/pub/') change directory to /pub/ getFile(ftp,'README.nluug') ftp.quit()
当我们运行上面的程序时,我们发现文件 README.nlug 存在于发起连接的本地系统中。