python pyminizip在压缩时中文文件名会乱码的解决办法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

工作中遇到的需求,需要压缩一个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后重新尝试,排错,遇见问题解决问题,最后解决神清气爽。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值