Python:从Minio对象创建Zip文件时每个文件出现重复条目

0 投票
1 回答
26 浏览
提问于 2025-04-13 13:50

在我的应用程序中,我需要从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)

1 个回答

1

zip_file.writestr() 这个方法适合在你已经准备好要写入的所有内容时一次性写入。如果你想分段写入内容,就需要先用 ent = zip_file.open() 打开一个条目,然后再用 ent.write() 来写入。

撰写回答