如何使用 Python 将文件压缩为受密码保护的存档
Posted
技术标签:
【中文标题】如何使用 Python 将文件压缩为受密码保护的存档【英文标题】:How to compress files as password protected archive using Python 【发布时间】:2017-02-23 20:49:39 【问题描述】:有没有办法将gzip
或zipfile
压缩为受密码保护的存档?
这是一个示例代码,说明如何在没有密码保护的情况下归档文件:
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()
【问题讨论】:
那么您要求的是其他人阅读这些功能的手册? The gzip format does not support password protection. 【参考方案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。这将是归档和压缩数据的单独包装。
【讨论】:
您是否愿意发布一个示例,说明如何加密源数据(文件或变量),将其存档到zip
或gzip
文件,然后解压缩并解密生成原始未压缩和解密的源数据。
首先,你把它弄反了。您必须在之前加密,而不是之后存档和压缩。加密数据显示为随机且不可压缩。其次,查看示例链接。
它对我不起作用。我已经使用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
以上是关于如何使用 Python 将文件压缩为受密码保护的存档的主要内容,如果未能解决你的问题,请参考以下文章
将基本 UserControl 的修饰符设置为受保护时,Visual Studio 崩溃