在Python中压缩文件(.zip)并限制大小

问题描述 投票:0回答:2

我正在尝试使用 Python 将存档压缩为最大大小(例如 1024mb)的“.zip”文件(或多个)。

我找到的唯一库是 gzip、shutil 和 zipfile,但我在其中找不到任何允许我以最大大小分割这些文件的选项。

我不想使用操作系统的功能,我想使用Python库来实现。这可能吗?

非常感谢。

python zip compression size limit
2个回答
1
投票

你应该可以使用 zipfile 来做到这一点,但我还没有测试过。

创建一个 zipfile 对象列表,其中仅包含一个 zipfile 对象。 迭代要压缩的文件,将它们添加到列表中最新的 zip 文件中,然后检查新元素是否超出文件大小限制。如果是,请删除刚刚从zip文件中压缩的项目,然后将新的zip文件添加到zip文件列表中,并将刚刚删除的文件添加到列表中最新的zip文件对象中。

您需要使用 ZipInfo.compress_size 来找出压缩文件的大小。


0
投票
    from split_file_reader.split_file_writer import SplitFileWriter
    import pathlib, math
    
    
    file_path = '/var/example.mp4'
    part_size = 1024 * 1024 * 1024, # 1024 mb 
    
    file = pathlib.Path(file_path)
    
    part_count = math.ceil(file.stat().st_size / part_size)
    
    width = len(str(part_count)) + 1
    
    compressed_names = [file.stem+".zip."+str(i).zfill(width) for i in range(part_count)]
    
    with SplitFileWriter(
        max_part_size=part_size,
        filenames=compressed_names
    ) as sfw:
        with zipfile.ZipFile(file=sfw, mode='w') as zipf:
            zipf.write(
                file.absolute(),
                file.name
            )
© www.soinside.com 2019 - 2024. All rights reserved.