Python文件的压缩和解压缩

时间:2019-10-11 07:19:02

标签: python python-3.x

我正在使用pyminizip压缩文件并用密码保护文件。一切正常,但我无法理解文件的解压缩。我阅读了图书馆的自述文件,但令人困惑,解压缩对我没有帮助。这是我的代码。

压缩

pyminizip.compress("src_file", None, "dest.zip", "password", 5)

解压缩

pyminizip.uncompress("file.zip", "password", "dest_path", int(withoutpath))

错误

SystemError: <built-in function uncompress> returned a result with an error set

我不知道什么是int(withoutpath)中的第四个参数uncompress()

官方文档说

pyminizip.compress("/srcfile/path.txt", "file_path_prefix", "/distfile/path.zip", "password", int(compress_level))

Args:
1. src file path (string)
2. src file prefix path (string) or None (path to prepend to file)
3. dst file path (string)
4. password (string) or None (to create no-password zip)
5. compress_level(int) between 1 to 9, 1 (more fast) <---> 9 (more compress) or 0 (default)

Return value:
- always returns None

pyminizip.compress_multiple([u'pyminizip.so', 'file2.txt'], [u'/path_for_file1', u'/path_for_file2'], "file.zip", "1233", 4, progress)
Args:
1. src file LIST path (list)
2. src file LIST prefix path (list) or []
3. dst file path (string)
4. password (string) or None (to create no-password zip)
5. compress_level(int) between 1 to 9, 1 (more fast) <---> 9 (more compress)
6. optional function to be called during processing which takes one argument, the count of how many files have been compressed

Return value:
- always returns None

pyminizip.uncompress("/srcfile/path.zip", "password", "/dirtoextract", int(withoutpath))
1. src file path (string)
2. password (string) or None (to unzip encrypted archives)
3. dir path to extract files or None (to extract in a specific dir or cwd)
4. withoutpath (exclude path of extracted)

Return value:
- always returns None

请帮助我。第四个论点确实使我烦恼,我无法在其他任何地方找到帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

import pyminizip
pyminizip.compress("src_file", None, "dest.zip", "password", 5)
pyminizip.uncompress("file.zip", "password", "dest_path", 0)

//代码https://github.com/smihica/pyminizip/blob/master/src/py_miniunz.c#L227

   if ((*popt_extract_without_path)==0)
        write_filename = filename_inzip;
    else
        write_filename = filename_withoutpath;