python ftp编程_Python FTP

FTP或文件传输协议是一种众所周知的网络协议,用于在网络中的计算机之间传输文件。它是在客户端服务器体系结构上创建的,可以与用户身份验证一起使用。也可以在不进行身份验证的情况下使用它,但这将降低安全性。FTP连接保持当前的工作目录和其他标志,并且每次传输都需要一个辅助连接,通过该连接可以传输数据。大多数常见的Web浏览器都可以检索FTP服务器上托管的文件。

1. 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()

关闭连接并退出。

以下是上述某些方法的示例。

2. 列出文件

下面的示例使用匿名登录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

3. 更改目录

下面的程序使用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

4. 提取文件

如上所示获取文件列表后,可以使用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存在于启动连接的本地系统中。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值