【问题标题】:How's python Pyminizip compress_multiple work?python Pyminizip compress_multiple 是如何工作的?
【发布时间】:2023-03-15 09:24:01
【问题描述】:

我的python版本是3.5,在Windows 10环境下通过Anaconda。我正在使用Pyminizip,因为我的 zip 文件需要密码保护,而Zipfile 尚不支持。

我可以通过函数pyminizip.compress 压缩单个文件,并且加密函数按预期工作。但是,在尝试使用pyminizip.compress_multiple 时,我总是遇到 Python 崩溃(如图),我认为这是由于我的输入格式错误造成的。

我想知道的是:输入参数src file LIST path 的可接受格式是什么?来自 Pyminizip 的文档:

pyminizip.compress_multiple([u'pyminizip.so', 'file2.txt'], "file.zip", "1233", 4, 进度)
参数:
1.src文件LIST路径(列表)
2.dst文件路径(字符串)
3. 密码(字符串)或无(创建无密码 zip)
4. compress_level(int) 1到9之间,1(更快速) 9(更压缩)

似乎第一个参数src file LIST path 应该是一个包含所有需要压缩的文件的列表。因此,我尝试使用compress_multiple 通过命令压缩单个文件:

pyminizip.compress_multiple(['Filename.txt'], 'output.zip', 'password', 4, optional)

这会导致 Python 崩溃。所以我尝试在 args 中添加完整路径。

pyminizip.compress_multiple( [os.getcwd(), 'Filename.txt'], ... )

但是,它又崩溃了。所以我想也许我必须像这样分开路径

path = os.getcwd().split(os.sep)
pyminizip.compress_multiple([path, 'Filename.txt'], ...)

还是运气不好。有任何想法吗?

【问题讨论】:

标签: python-3.x zipfile


【解决方案1】:

Pyminizip 需要文件中的路径名(或运行脚本的相对路径名)。

你的例子:

pyminizip.compress_multiple( [os.getcwd(), 'Filename.txt'], ... )

给出 os.getcwd() 的文件列表,然后是另一个文件“Filename.txt”。您需要使用 os.path.join() 将它们组合成一条路径

在您的文件名示例中,您将需要:

pyminizip.compress_multiple( [os.path.join(getcwd(), 'Filename.txt')],...)

反过来:

pyminizip.compress_multiple( [os.path.join(getcwd(), 'Filename1.txt'), os.path.join(getcwd(), 'Filename2.txt')],...)

【讨论】:

    猜你喜欢
    • 2022-08-02
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2011-04-30
    • 2013-12-28
    • 2011-05-16
    相关资源
    最近更新 更多