我想从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尽可能低。