python [Python]使用密码创建zip存档文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python [Python]使用密码创建zip存档文件相关的知识,希望对你有一定的参考价值。

import os
import os.path as op
import shutil
import tempfile
import subprocess


def create_zip(files, password=None):
    """
    Args:
        files: e.g. [{"filename": "a.txt", "content": "hello"}, {"filename": "a/b.txt", "content": "world"}]

    Example:
        zdata = create_zip([{"filename": "a.txt", "content": "hello"}, {"filename": "a/b.txt", "content": "world"}], password='123')
        open('/tmp/t.zip', 'w').write(zdata)
    """
    temp_dir = tempfile.mkdtemp()

    for spec in files:
        filename = op.join(temp_dir, spec['filename'])
        dirname = op.dirname(filename)
        if not op.exists(dirname):
            os.makedirs(dirname)
        open(filename, 'wb').write(spec['content'])

    ar_path = op.join(temp_dir, 'ar.zip')

    cmd = [
        '7z', 'a', '-y', ar_path, temp_dir + '/*'
    ]

    if password is not None:
        cmd.append('-p' + password)

    subprocess.call(cmd)

    zdata = open(ar_path).read()
    shutil.rmtree(temp_dir)

    return zdata

以上是关于python [Python]使用密码创建zip存档文件的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 python zipfile 库解压缩带有密码的 .zip 文件

Python - 密码保护 Zip 文件夹

Python 破解带密码保护的Zip文件

Zip文件破解器python 3只会在文本文件末尾使用密码

怎么从zip里提取文件 Python

Python基础练习三超市存包柜模拟(优化)