【问题标题】:How to compress files as password protected archive using Python如何使用 Python 将文件压缩为受密码保护的存档
【发布时间】:2017-02-23 20:49:39
【问题描述】:

有没有办法将gzipzipfile 压缩为受密码保护的存档? 这是一个示例代码,说明如何在没有密码保护的情况下归档文件:

import gzip, shutil

filepath = r'c:\my.log'

with gzip.GzipFile(filepath + ".gz", "w") as gz:
    with open(filepath) as with_open_file:
        shutil.copyfileobj(with_open_file, gz)

import zipfile

zf = zipfile.ZipFile(filepath + '.zip', 'w')
zf.write(filepath)
zf.close()

【问题讨论】:

标签: python passwords gzip archive zipfile


【解决方案1】:

Python 支持extracting password protected zips:

zipfile.ZipFile('myarchive.zip').extractall(pwd='P4$$W0rd')

遗憾的是,它不支持创建它们。您可以调用 7zip 之类的外部工具,也可以使用this zlib wrapper 之类的第三方库。

【讨论】:

  • 虽然pyminizip 可以为创建受密码保护的档案的人提供一个简单的解决方案,但安装起来非常困难。如果您对如何在 Windows for Python 2.7 上安装它有任何建议,请告诉我。
  • 在 Windows 上,我只需安装 7zip 并从 Python 调用它。
【解决方案2】:

使用gpg for encryption。这将是归档和压缩数据的单独包装。

【讨论】:

  • 您是否愿意发布一个示例,说明如何加密源数据(文件或变量),将其存档到zipgzip 文件,然后解压缩并解密生成原始未压缩和解密的源数据。
  • 首先,你把它弄反了。您必须在之前加密,而不是之后存档和压缩。加密数据显示为随机且不可压缩。其次,查看示例链接。
  • 它对我不起作用。我已经使用pip install python-gnupg 安装了它。使用import gnupg 导入的模块。然后我尝试使用gpg = gnupg.GPG('C:/temp') 启动实例,这会给出我在下面发布的错误消息
  • Traceback (most recent call last): File "C:\temp\test.py", line 19, in <module> gpg = gnupg.GPG('C:/temp') File "C:\Python27\lib\site-packages\gnupg\gnupg.py", line 125, in __init__ ignore_homedir_permissions=ignore_homedir_permissions, File "C:\Python27\lib\site-packages\gnupg\_meta.py", line 181, in __init__ self.homedir = os.path.expanduser(home) if home else _util._conf
  • File "C:\Python27\lib\site-packages\gnupg\_util.py", line 765, in __set__ getattr(obj, self.fset.__name__)(value) File "C:\Python27\lib\site-packages\gnupg\_meta.py", line 438, in _homedir_setter raise RuntimeError(str(ae)) RuntimeError: Homedir ''C:\temp\gnupghome\.config\python-gnupg'' needs read/write permissions
猜你喜欢
  • 1970-01-01
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 2010-10-28
相关资源
最近更新 更多