我在Python 2.5中使用ZipFile创建一个ZIP文件,它到目前为止工作正常:
import zipfile, os
locfile = "test.txt"
loczip = os.path.splitext (locfile)[0] + ".zip"
zip = zipfile.ZipFile (loczip, "w")
zip.write (locfile)
zip.close()
Run Code Online (Sandbox Code Playgroud)
但我找不到如何加密ZIP文件中的文件.我可以使用系统并调用PKZIP -s,但我想必须有更"Pythonic"的方式.我正在寻找一个开源解决方案.
Shi*_*ama 17
我创建了一个简单的库来在python中创建一个密码加密的zip文件.- 在这里
import pyminizip
compression_level = 5 # 1-9
pyminizip.compress("src.txt", "dst.zip", "password", compression_level)
Run Code Online (Sandbox Code Playgroud)
该库需要zlib.
我已经检查过该文件可以在WINDOWS/MAC中提取.
重复的问题/sf/answers/165684221/建议使用7z而不是zip.我的经历证明了这一点.
复制/粘贴@JFSebastian的答案也是为了完整性:
'myarchive.zip'使用开源7-Zip实用程序创建加密的zip存档(命名):
rc = subprocess.call(['7z', 'a', '-mem=AES256', '-pP4$$W0rd', '-y', 'myarchive.zip'] +
['first_file.txt', 'second.file'])
Run Code Online (Sandbox Code Playgroud)
要安装7-Zip,请键入:
$ sudo apt-get install p7zip-full
Run Code Online (Sandbox Code Playgroud)
要手动解压缩(以证明与zip utitity的兼容性),请键入:
$ unzip myarchive.zip
Run Code Online (Sandbox Code Playgroud)
并P4$$W0rd在提示符下输入.
或者在Python 2.6+中相同:
>>> zipfile.ZipFile('myarchive.zip').extractall(pwd='P4$$W0rd')
Run Code Online (Sandbox Code Playgroud)
pyminizip非常适合创建受密码保护的 zip 文件。对于解压,在某些情况下会失败。在 python 3.7.3 上测试
在这里,我使用 pyminizip 来加密文件。
import pyminizip
compression_level = 5 # 1-9
pyminizip.compress("src.txt",'src', "dst.zip", "password", compression_level)
Run Code Online (Sandbox Code Playgroud)
为了解压缩,我使用了 zip 文件模块:
from zipfile import ZipFile
with ZipFile('/home/paulsteven/dst.zip') as zf:
zf.extractall(pwd=b'password')
Run Code Online (Sandbox Code Playgroud)
Har*_*mbe -1
您可以使用Chilkat库。它是商业的,但有免费评估,而且看起来相当不错。
这是我从这里得到的一个例子:
import chilkat
# Demonstrates how to create a WinZip-compatible 128-bit AES strong encrypted zip
zip = chilkat.CkZip()
zip.UnlockComponent("anything for 30-day trial")
zip.NewZip("strongEncrypted.zip")
# Set the Encryption property = 4, which indicates WinZip compatible AES encryption.
zip.put_Encryption(4)
# The key length can be 128, 192, or 256.
zip.put_EncryptKeyLength(128)
zip.SetPassword("secret")
zip.AppendFiles("exampleData/*",True)
zip.WriteZip()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27326 次 |
| 最近记录: |