在我的应用程序中,我需要从 Minio 存储获取文件并从中创建 Zip 文件。有些文件可能非常大,因此我尝试将它们分成块写入,以便能够更有效地处理该过程。然而,结果是一个包含多个具有相同文件名的条目的 zip 文件。我认为这些是块。如何组合这些块,以便 Zip 文件中只有原始文件?或者有没有更好的方法来处理将大文件写入 Zip?
这是我编写块的代码块:
zip_buffer = io.BytesIO()
with zipfile.ZipFile(zip_buffer, "w") as zip_file:
for url in minio_urls:
file_name = url.split("/")[-1]
# Retrieve the Minio object
minio_object, object_name = get_object_from_minio(url)
stream = minio_object.stream()
while True:
chunk = next(stream, None) # Read the next chunk
if chunk is None:
break
zip_file.writestr(file_name, chunk)
zip_file.writestr()
仅当您一次性写入全部条目内容时才会使用。如果您想一次写入一大块条目,则需要使用 ent = zip_file.open()
,然后使用 ent.write()
。