python Pyminizip compress_multiple 是如何工作的?
Posted
技术标签:
【中文标题】python Pyminizip compress_multiple 是如何工作的?【英文标题】:How's python Pyminizip compress_multiple work? 【发布时间】:2017-04-10 03:27:22 【问题描述】:我的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'], ...)
还是运气不好。有任何想法吗?
【问题讨论】:
好像不是输入格式的问题,而是潜在的bug...github.com/smihica/pyminizip/issues/5 【参考方案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')],...)
【讨论】:
以上是关于python Pyminizip compress_multiple 是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu python Compression requires the (missing) zlib module
python read_compressed_file.py
python compress_objects_memory.py
python 安装 setuptools Compression requires the (missing) zlib module 的解决方案
python 安装 setuptools Compression requires the (missing) zlib module 的解决方案