提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
工作中遇到的需求,需要压缩一个excel表格并且加密,花了大半天时间查了很多资料,做一下总结吧!感觉网上相对应的解决办法很少,希望对有缘人要帮助。
提示:以下是本篇文章正文内容,下面案例可供参考
一、python压缩文件的三方库
python用来压缩文件的第三方库常用的就两种zipfile和pyminizip.
使用体验:
zipfile:还算好用压缩文件在win环境下不用担心出现乱码,基本上都能正常压缩,不过对我来说重点是能不能加密,很遗憾通过尝试和查阅很多资料,发现并不能加密。
pyminizip:非常简单的压缩语句一目了然,可以加密,但在win环境下压缩有中文名的文件时,解压后会导致乱码文件损坏。今天重点说这个。
二、解决方法
1.乱码的情况
环境:win+python+pyminizip
代码如下(示例):
使用函数压缩并加密文件
input_file_path = "要加密的文件名.cod" # 待压缩的文件名或者包含文件名的路径
output_file_path = 'youfile.zip' # 压缩后的文件名或者包含压缩文件名的路径
password = 'youpassword' # 加密密码
# 压缩并加密文件
pyminizip.compress(input_file_path, None, output_file_path, password, 5)
print('加密的压缩文件已创建')
这样运行后的结果就是报错,但是压缩文件还是会生成,只是解压后解压出来的文件名是乱码,文件无法打开
解决办法也出乎意料的简单
# 使用函数压缩并加密文件
input_file_path = "要加密的文件名.cod" # 待压缩的文件名或者包含文件名的路径
output_file_path = 'youfile.zip' # 压缩后的文件名或者包含压缩文件名的路径
password = 'youpassword' # 加密密码
# 压缩并加密文件
pyminizip.compress(input_file_path.encode('gbk'), None, output_file_path, password, 5)
print(f'加密的压缩文件已创建:{zip_filename}')
只在你的要压缩的文件名的参数后添加encode(‘gbk’)就解决了,至于这是啥我就不讲了自己查。
注意事项
在安装pyminizip时或遇到缺少c++依赖请参考:
https://blog.csdn.net/rock4you/article/details/52689043
总结
试错的过程总是枯燥的,今天先是被AI坑了它只知道利用已经存在的知识,哪怕那个知识是错误的(zipfile的可以加密,这个错误信息),找到替代的pyminizip后重新尝试,排错,遇见问题解决问题,最后解决神清气爽。