原文: https://pythonspot.com/ftp-client-in-python/

本文将从客户端的角度向您展示如何在 Python 中使用文件传输协议(FTP)。 我们使用ftplib,这是一个实现 FTP 协议的库。 使用 FTP,我们可以通过函数调用创建和访问远程文件。

目录列表

我们可以使用这个小片段列出根目录:

  1. import ftplib
  2. ftp = ftplib.FTP("ftp.nluug.nl")
  3. ftp.login("anonymous", "ftplib-example-1")
  4. data = []
  5. ftp.dir(data.append)
  6. ftp.quit()
  7. for line in data:
  8. print "-", line

这将输出目录内容。 以简单的控制台样式输出。 如果要显示特定目录,则必须在连接ftp.cwd('/')函数后更改目录,其中参数是您要更改的目录。

  1. import ftplib
  2. ftp = ftplib.FTP("ftp.nluug.nl")
  3. ftp.login("anonymous", "ftplib-example-1")
  4. data = []
  5. ftp.cwd('/pub/') # change directory to /pub/
  6. ftp.dir(data.append)
  7. ftp.quit()
  8. for line in data:
  9. print "-", line

下载文件

要下载文件,我们使用retrbinary()函数。 下面的例子:

  1. import ftplib
  2. import sys
  3. def getFile(ftp, filename):
  4. try:
  5. ftp.retrbinary("RETR " + filename ,open(filename, 'wb').write)
  6. except:
  7. print "Error"
  8. ftp = ftplib.FTP("ftp.nluug.nl")
  9. ftp.login("anonymous", "ftplib-example-1")
  10. ftp.cwd('/pub/') # change directory to /pub/
  11. getFile(ftp,'README.nluug')
  12. ftp.quit()

上传文件

我们可以使用storlines()命令上传文件。 这将在主目录中上传文件README.nluug。 如果要在另一个目录中上传,请与cwd()函数结合使用。

  1. import ftplib
  2. import os
  3. def upload(ftp, file):
  4. ext = os.path.splitext(file)[1]
  5. if ext in (".txt", ".htm", ".html"):
  6. ftp.storlines("STOR " + file, open(file))
  7. else:
  8. ftp.storbinary("STOR " + file, open(file, "rb"), 1024)
  9. ftp = ftplib.FTP("127.0.0.1")
  10. ftp.login("username", "password")
  11. upload(ftp, "README.nluug")

其他函数

有关其他函数,请参考官方库文档