gpt4 book ai didi

python - 从 FTP 检索文件并直接写入 zip 存档

转载 作者:行者123 更新时间:2023-12-01 08:34:45 25 4
gpt4 key购买 nike

我想从 FTP 服务器下载文件并将其存档在本地 (zip) 存档中。

众所周知如何下载文件并单独保存它们:

import ftplib
remote = ftplib.FTP(ftp_server)
remote.login(username, password)
for filename in file_list:
remote.retrbinary("RETR " + filename, open(filename, 'wb').write)
remote.quit()

如何将文件添加到存档中也是众所周知的:

import zipfile
archive = zipfile.ZipFile(archive_file)
archive.write(filename)
archive.close()

但似乎不可能同时使用两者:

remote.retrbinary("RETR " + filename, archive.write(filename))

这会导致 FileNotFoundError,因为 filename 尚未保存到其间的本地(临时)目录中。

有没有办法直接将文件流从 FTP 发送到 zip 存档中?或者直接下载所有文件,将它们添加到存档中,然后删除文件会更有效吗?我希望硬盘 I/O 尽可能低。

最佳答案

将文件下载到内存并使用ZipFile.writestr :

import ftplib
import zipfile
from io import BytesIO

# ...

archive = zipfile.ZipFile(archive_file, "w")

for filename in file_list:
flo = BytesIO()
ftp.retrbinary('RETR ' + filename, flo.write)
archive.writestr(filename, flo.getvalue())

archive.close()

关于python - 从 FTP 检索文件并直接写入 zip 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53776450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com