关于利用python解压文件出现文件名乱码的问题

2023-11-01

利用python中的zipfile模块解压zip文件会出现文件名乱码的问题,会成为莫名的字符,例如:
此类型乱码
出现原因:
zipfile模块中的源代码如下:

        if flags & 0x800:
            # UTF-8 file names extension
            filename = filename.decode('utf-8')
        else:
            # Historical ZIP filename encoding
            filename = filename.decode('cp437')

可知,除了被正确识别,转为'utf-8'编码,除此之外的所有都将被转成‘cp437’
解决思路:
先将zip文件用extract()/extractall()方法正常解压至目标文件夹,利用encode(),decode()方法进行转码,最后用os.rename(src,dst)函数将文件重命名。
具体代码如下:

def change_name(filename):
       os.chdir(filename)
       for i in os.listdir("."):
           try:
               test_name=i.encode("cp437")
               test_name=test_name.decode("gbk")#将文件名转为gbk中文编码
               os.rename(i,test_name)#重命名
               i=test_name
           except:
               pass
           if os.path.isdir(i):#如果解压后的是一个文件夹
               change_name(i)
               os.chdir('..')

本文参考自:python3 zipfile解压中文乱码问题解决

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于利用python解压文件出现文件名乱码的问题 的相关文章

  • 如何使用 Julia 查找矩阵中的连通分量

    假设我有以下矩阵 此处用 Julia 语言定义 mat 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 将一组值为 1 的相邻元素视为一个 分量 如何识别该矩阵有 2 个分量以及每个分量由哪些顶点组成 对于矩
  • 在python中合并3个dict()

    如果多个字典之间有公共字符串 是否有逻辑合并多个字典的方法 即使这些公共字符串在一个 dict 的值与另一个 dict 的键之间匹配 我在 SO 上看到了很多类似的问题 但似乎没有一个问题能解决我将 较低级别文件 中的多个键与较高键 值中的
  • numpy:与索引数组有效求和

    假设我有 2 个矩阵 M 和 N 都有 gt 1 列 我还有一个索引矩阵 I 有 2 列 1 列代表 M 一列代表 N N 的索引是唯一的 但 M 的索引可能出现多次 我想要执行的操作是 for i j in w M i N j 除了 fo
  • 来自 Pandas DataFrame 的用户定义的 Json 格式

    我有一个 pandas dataFrame 打印 pandas DataFrame 后 结果如下所示 country branch no of employee total salary count DOB count email x a
  • 当类的任何属性被修改时,类如何运行某些函数?

    是否有一些通用方法可以让类在以下情况下运行函数 any它的属性被修改了吗 我想知道是否可以运行某些子进程来监视类的更改 但也许有一种方法可以继承class并修改一些on change函数是 Python 类的一部分 有点像默认的 repr
  • Python:当为变量分配新内容时,“旧”内存是否被释放?

    如果为变量分配了任何新内容 为 旧内容 分配的内存是否会 正确 释放 例如 在以下脚本中 在为 a 分配一些新内容后 变量 a 作为零数组的内存是否会被释放 import numpy a numpy zeros 1000 a a 1 我想象
  • 安装 Ta-lib 会产生 gcc 错误

    当我尝试在我的 mac 上将 Ta lib 作为全局包安装时 出现 gcc 错误 我收到以下错误 gcc Wno unused result Wsign compare Wunreachable code DNDEBUG g fwrapv
  • 如何实现带有 ([start ,] stop [ step]) 签名的 python 方法,即左侧的默认关键字参数

    由于在 python 3 X 中 build idrange 函数返回的不再是一个列表 而是一个可迭代的 一些旧代码在我使用时失败range 方便地生成我需要的列表 所以我尝试实现我自己的lrange像这样的函数 def lrange st
  • argparse - 禁用相同参数的出现

    我正在尝试使用 argparse 禁用一个命令行中出现相同的参数 python3 argument1 something argument2 argument1 something else 这意味着这应该会引发错误 因为 argument
  • 令人困惑的问题>> FileNotFoundError:[Errno 2]没有这样的文件或目录:

    这个问题让我很困惑 也许问题出在代码上 希望你看一下 with open training images labels path r as file lines file readlines 他说该文件不存在 FileNotFoundErr
  • Python 调试器是否会介入生成器?

    我目前正在使用 NetBeans IDE 和 Jython 2 5 1 当逐步调试我的项目时 一旦遇到生成器的迭代 调试器就会直接转到代码末尾 输出工作正常 但是一旦满足第一个生成器就无法进行逐步调试 这是所有 Python IDE 中 P
  • python中终止进程的跨平台方法

    当我尝试使用 subprocess Popen terminate 或 Kill 命令终止 Windows 中的进程时 出现访问被拒绝错误 如果文件不再存在 我真的需要一种跨平台的方式来终止进程 是的 我知道这不是做我正在做的事情的最优雅的
  • matplotlib 中矩形面片之间存在不需要的空间

    以下代码绘制两个红色矩形 红色矩形应该彼此相邻 之间没有空间 在 python 图中 这是可以的 在导出的 pdf 中 矩形之间有一个细长但明显的空白 有什么方法可以解决这个问题吗 import matplotlib pyplot as p
  • SQLAlchemy 是否会从同一连接重置 SQLAlchemy 会话之间的数据库会话?

    SQLAlchemy 利用连接池 这意味着相同的连接可以在不同的 SQLAlchemy 会话之间重复使用 但是 单个 SQLAlchemy 会话包含在其自身内并在关闭后被丢弃 然而 连接保持 活动 状态 我想使用 set config 将一
  • 我以为 Python 通过引用传递了所有内容?

    采取以下代码 module functions py def foo input new val input new val module main py input 5 functions foo input 10 print input
  • 使用 python pyad 访问对象 [] 时出现问题

    我在尝试使用 pyad 访问活动目录用户属性时遇到问题 这是我的代码 user pyad aduser ADUser from cn tuser print user get attribute lastLogonTimestamp 这些是
  • WTforms 表单未提交但不输出验证错误

    我正在尝试使用以下方式上传文件flask uploads工作和遇到一些障碍 我会告诉你我的flask查看函数 html 希望有人能指出我缺少的内容 基本上发生的情况是我提交了表格但失败了if request method POST and
  • 将 PySpark RDD 作为新列添加到 pyspark.sql.dataframe

    我有一个 pyspark sql dataframe 其中每一行都是一篇新闻文章 然后我有一个 RDD 来表示每篇文章中包含的单词 我想将单词的 RDD 作为名为 单词 的列添加到我的新文章数据框中 我试过 df withColumn wo
  • 类型错误:对于仅使用浮点数的函数,返回数组必须是 ArrayType

    这个实在是难倒我了 我有一个计算单词权重的函数 我已经确认 a 和 b 局部变量都是 float 类型 def word weight term a term freq term print a type a b idf term prin
  • 在 kivy 中嵌套小部件

    我正在尝试在 kivy 中制作一个界面 我认为即使在完成教程之后 我仍然不了解自定义小部件以及如何对它们进行层次结构的一些基本知识 我认为我有更多的盒模型 html 思维方式 因此小部件嵌套在本机 GUI 中的方式对我来说仍然有点陌生 一些

随机推荐

  • Easyexcel导出带下拉框选项excel模板(解决下拉框超50个的问题)

    1 为了避免excel下拉框选项过多会导致内容不显示 或者生成的时候报错 String literals in formulas can t be bigger than 255 characters ASCII easyexcel 将下拉
  • MobaXterm下载提示输入Master密码,如何使用ResetMasterPassword工具恢复MobaXterm和设置MobaXterm主密码

    MobaXterm忘记主密码 如何恢复和设置主密码 点此下载ResetMasterPassword MobaXterm 20 0汉化版下载 MobaXterm是一款非常好用的远程管理软件 支持SSH FTP 串口 VNC X server等
  • 基础算法题——异或和之和(位运算、组合数)

    异或和之和 题目链接 解题思路 解题方案 暴力枚举 时间复杂度 O n3 超时 位操作 组合数 解铃还须系铃人 对于这种与 或 异或的位操作 一般也是通过位操作来解答 总结规律 题目要求在 n 个正整数中枚举 3 个数进行位操作 若要确定
  • Spring Boot v2.4.4源码解析(十)依赖注入原理下 —— 依赖解析

    从 Spring Boot v2 4 4源码解析 八 依赖注入原理上 由一道面试题引起的思考 Autowired和 Resource的区别 可以看出 解析待注入字段或参数主要由 org springframework beans facto
  • windows与linux字符集转换

    linux下不能显示windows下的汉字 Windows和LINUX中缺省使用的字符集不同 Windows下工具可以识别LINUX中使用的UTF8字符集 而LINUX下一般工具不会自动转换Windows下的GBK字符集 如果确实需要显示
  • Mysql数据备份及数据恢复

    数据备份概述 根据数据备份的方式 分为逻辑备份和物理备份 物理备份 物理备份就是备份数据文件了 比较形象点就是cp下数据文件 但真正备份的时候自然不是的cp这么简单 逻辑备份 将数据导出至文本文件中 mysqldump是采用SQL级别的备份
  • IDEA配置Scala,使用IDEA创建第一个Scala项目

    1 首先安装IDEA IDEA的官网 https www jetbrains com idea download section mac 选择你对应的系统 版本选择社区版即可 如果有需要的可以选择Ultimate版 2 安装后 打开IDEA
  • java常用类及其方法使用StringBuffer

    基本介绍 1 StringBuffer类是对String类的增强 其代表了可变字符序列 可以对字符串的内容进行增删 2 很多方法和String是相同的 但是StringBuffer是可变长度的 3 StringBuffer是一个容器 4 类
  • stata做计量入门常用代码一览!

    现在越来越多人有写论文的需求啦 经管领域的论文中 实证研究已成为必备操作 有了下面的代码 直接上手跑数据 一 分组回归 实证中 常常要分行业分年度 分省份分年度等分组回归 保存出回归出来的某些参数 statsby就是一个有用的命令 命令语句
  • MySQL基础——多表查询练习题

    文章目录 1 查询员工的姓名 年龄 部门信息 隐式内连接 2 查询年龄小于30岁的员工的姓名 年龄 职位 部门信息 显示内连接 3 查询拥有员工的部门id 部门名称 4 查询所有年龄大于40岁的员工 及其归属的部门名称 如果没有分配部门 也
  • 人工智能ai算法_AI算法比您想象的要脆弱得多

    人工智能ai算法 In William Gibson s 2010 novel Zero History a character preparing to go in a high stakes raid wears an oddly pa
  • window像mac一样使用快捷键(AutoHotkey、SharpKeys和PowerToys)

    自己有win和mac两台笔记本 每天都需要在两台电脑切换进行开发 快捷键的差异就让人很难受 个人喜好mac快捷键 常用的几个快捷键分布比较合理 所以网上找来了解决方案供大家参考 我想作为一名 Mac User 使用 Win 首先感到不适应的
  • ####好好好#####时序数据库介绍和使用

    1 基础 1 1 时序数据的定义 什么是时间序列数据 Time Series Data TSD 以下简称时序 从定义上来说 就是一串按时间维度索引的数据 用描述性的语言来解释什么是时序数据 简单的说 就是这类数据描述了某个被测量的主体在一个
  • webpack3 CommonsChunkPlugin插件分离三方库(jQuery.js/vue.js等)和公共模块 分别打包

    需求 使用webpack进行打包时 我们不想自己写的js文件与第三方的js库一起打包成一个庞大的文件 而是想要第三方插件库单独打包一个js 我们自己写的js独立打包 优点 1 分割js文件避免单独一个js文件太大影响用户使用体验 2 通常来
  • fastdfs特点

    FastDFS是一个开源的轻量级分布式文件系统 它对文件进行管理 功能包括 文件存储 文件同步 文件访问 文件上传 文件下载 等 解决了大容量存储和负载均衡的问题 特别适合以文件为载体的在线服务 如相册网站 视频网站等等 FastDFS为互
  • 每个开发人员都应该知道的10个CSS选择器

    对于任何网站而言 要在用户上产生良好印象是什么 是的 它是任何网站的用户界面 每个开发人员都知道为用户创建美观的设计以便与任何网站进行交互非常重要 如果你不熟悉CSS及其选择器 那么在最短的时间内巧妙地对网页进行样式设置并不是一件容易的事
  • css中display属性作用大全

    定义和用法 display 属性规定元素应该生成的框的类型 实例 设置段落生成一个行内框 p inline display inline 使用说明 说明 这个属性用于定义建立布局时元素生成的显示框类型 对于 HTML 等文档类型 如果使用
  • 学习记录,利用canvas写扫雷游戏

    记录js学习后制作的第一关小游戏 这里的代码还不够精简 许多地方偷懒没有封装 逻辑也有许多可以优化 胜利条件 找出所有地雷并标记
  • XSS-labs靶场1-13关解法答案

    目录 XSS labs克隆 下载地址 第一关 解法 第二关 解法 第三关 解法 第四关 解法 第五关 解法 第六关 解法 第七关 解法 第八关 解法 第九关 解法 第十关 解法 第十一关 解法 第十二关 解法 第十三关 解法 从XSS pa
  • 关于利用python解压文件出现文件名乱码的问题

    利用python中的zipfile模块解压zip文件会出现文件名乱码的问题 会成为莫名的字符 例如 出现原因 zipfile模块中的源代码如下 if flags 0x800 UTF 8 file names extension filena