本文将从客户端的角度向您展示如何在 Python 中使用文件传输协议(FTP)。 我们使用ftplib
,这是一个实现 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
这将输出目录内容。 以简单的控制台样式输出。 如果要显示特定目录,则必须在连接ftp.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
下载文件
要下载文件,我们使用retrbinary()
函数。 下面的例子:
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()
上传文件
我们可以使用storlines()
命令上传文件。 这将在主目录中上传文件README.nluug
。 如果要在另一个目录中上传,请与cwd()
函数结合使用。
import ftplib
import os
def upload(ftp, file):
ext = os.path.splitext(file)[1]
if ext in (".txt", ".htm", ".html"):
ftp.storlines("STOR " + file, open(file))
else:
ftp.storbinary("STOR " + file, open(file, "rb"), 1024)
ftp = ftplib.FTP("127.0.0.1")
ftp.login("username", "password")
upload(ftp, "README.nluug")
其他函数
有关其他函数,请参考官方库文档。