Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 62.1MB ·虚拟内存 1300.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
FTP或文件传输协议是一种众所周知的网络协议,用于在网络中的计算机之间传输文件。它是在客户端服务器体系结构上创建的,可以与用户身份验证一起使用。也可以在不进行身份验证的情况下使用它,但这将降低安全性。FTP连接保持当前的工作目录和其他标志,并且每次传输都需要一个辅助连接,通过该连接可以传输数据。大多数常见的Web浏览器都可以检索FTP服务器上托管的文件。
在python中,我们使用ftplib模块,该模块具有以下必需的方法来列出文件,因为需要使用FTP来传输文件。
方法 | 描述 |
pwd() | 当前工作目录。 |
cwd() | 将当前工作目录更改为指定路径。 |
dir([path[,...[,cb]]) | 显示路径的目录列表。传递给retrlines()的可选回调cb。 |
storlines(cmd, f) | 使用给定的FTP cmd上传文本文件-例如STOR文件名。 |
storbinary(cmd,f[, bs=8192]) | 与storlines()类似,但用于二进制文件。 |
delete(path) | 删除指定路径下的远程文件。 |
mkd(directory) | 创建远程目录。 |
exception ftplib.error_temp | 当收到表示临时错误的错误代码(响应代码在400-499范围内)时,引发异常。 |
exception ftplib.error_perm | 当收到表示永久错误的错误代码(响应代码在500–599范围内)时,引发异常。 |
connect(host[, port[, timeout]]) | 连接到给定的主机和端口。默认端口号是21,由FTP协议指定。 |
quit() | 关闭连接并退出。 |
以下是上述某些方法的示例。
下面的示例使用匿名登录ftp服务器并列出当前目录的内容。它处理文件和目录的名称,并将它们存储为列表。然后将它们打印出来。
# Filename : example.py# Copyright : 2020 By Aizws# Author by : www.aizws.net# Date : 2020-08-25import 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
执行上面示例代码,得到以下结果:
# Filename : example.py# Copyright : 2020 By Aizws# Author by : www.aizws.net# Date : 2020-08-25- 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方法来更改目录,然后获取所需的内容。
# Filename : example.py# Copyright : 2020 By Aizws# Author by : www.aizws.net# Date : 2020-08-25import 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
执行上面示例代码,得到以下结果:
# Filename : example.py# Copyright : 2020 By Aizws# Author by : www.aizws.net# Date : 2020-08-25- 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连接的本地系统。
# Filename : example.py# Copyright : 2020 By Aizws# Author by : www.aizws.net# Date : 2020-08-25import 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存在于启动连接的本地系统中。
FTP也称为SSH文件传输协议。它是一种网络协议,可通过任何可靠的数据流提供文件访问,文件传输和文件管理。该程序通过安全通道(例如SSH)运行,服务器已对客户端进行身份验证,并且该协议可使用客户端用户的身份。pysf ...