【问题标题】:Create a CSV file directly on an FTP server直接在 FTP 服务器上创建 CSV 文件
【发布时间】:2015-02-03 08:15:38
【问题描述】:

我使用 Python csv 库创建了一个 CSV 文件。

创建完所有 CSV 文件后,我的第二个任务是将它们放在 FTP 服务器上。

为此,我在我的 Linux 计算机上的 /tmp 文件夹中生成我的所有文件,然后我打开一个 FTP 连接并将它们全部上传到远程服务器。

我的问题是:是否可以在内存缓冲区中创建 CSV 文件并将它们直接放在我的 FTP 服务器上?

【问题讨论】:

  • 你能显示你用来生成文件的代码,以及你用来上传文件的代码吗?
  • 是的。您可能可以使用ftplib.FTP 对象通过其storlines()(或storbinary())方法执行此操作,该方法只需要“具有 readline() 方法的类文件对象”或“具有 readline() 方法的类文件对象” (num_bytes) 方法”。请参阅从大约第 455 行开始的source(或在您的 Python 安装的 .../Lib/ftplib.py 文件中)。

标签: python csv ftp


【解决方案1】:

是的,您可以使用 StringIO(或更好的 cStringIO)在内存中生成文件。 你可以试试这样:

import csv
from ftplib import FTP
from cStringIO import StringIO

...
ftp = FTP(host, user, passwd)
ftp.login()
output = StringIO()
data = csv.writer(output)
data.writerow(["data"] * 5)
output.seek(0)
ftp.storbinary("STOR data.txt", output)
...

请注意,这不是完全可行的代码,您可能需要根据您的 FTP 配置进行一些更改。例如,我必须添加 ftp.set_pasv(False) 才能使其与我的测试 FTP 一起使用。

【讨论】:

  • 谢谢,很完美。正是我需要的。