使用python修复文件乱码

最近整理硬盘,硬盘里有很多类似

壋彈壆晘偱桙偝傟傑偣傫偐 乣彮彈媧寣昉偺丄偍嵗晘梀傃乣

的乱码文件名

产生原因其实很简单,我这个文件本身是shift-jis(日文)编码的,在我的中文操作系统里被当做gbk解码就变成乱码了。
所以如果仅仅修复文名的话,只需要

str.encode('gbk').decode('shift-jis')

就可以实现了。
但是如果这行语句处理到原本不是乱码的,反而就变成乱码了。
为了自动化处理乱码文件,还需要识别出哪些是乱码。

根据我的测试,发现这些乱码文件,往往可以转成gbk但是不能转成gb2312。所以我就先尝试将文件名编码成gb2312和shift-jis如果报错,就判断是乱码,转码成gbk,再解码成shfit-jis。

我实现的代码如下:

import os.path
import osdef mess_det(input):try:    input.encode('gb2312')return 'zh'except:passtry:input.encode('shift-jis')return 'jp'except:passtry:name2=name.encode('gbk').decode('shift-jis')return 'mess'except:passfor root, dirs, files in os.walk(r"PATH", topdown=False):for name in files:mess=mess_det(name)if mess=='mess':new_name=name.encode('gbk').decode('shift-jis')os.rename(os.path.join(root,name),os.path.join(root,new_name))    for name in dirs:mess=mess_det(name)if mess=='mess':new_name=name.encode('gbk').decode('shift-jis')os.rename(os.path.join(root,name),os.path.join(root,new_name))

虽然不知道会不会有bug,但是我处理了不少文件了,还没出问题。

使用python修复文件乱码相关推荐

  1. python安装文件乱码_python输出到文件乱码如何解决

    python代码文件的编码 py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代码 ...

  2. python读取文件乱码问题

    今天突然想做一个实时读取 日志文件的程序,然后用Python爬虫直接爬取文件,用只读的方式打开避免对 系统 写入日志 造成影响. 上代码: #! /usr/bin/env python # codin ...

  3. python写入文件乱码\u559c\u6b22\u4e00\u4e2a\u4eba

    当python爬虫出来的数据在txt文件显示为\u559c\u6b22\u4e00\u4e2a\u4eba乱码时,解决方案为: def save_content_list(self, content_ ...

  4. python读取文件——乱码问题总结

    乱码问题总结 今天在使用neo4j构建知识图谱时,读取建立好csv文件出现了报错,发现是乱码问题.在搜索了很多相关资料后,发现都不是很全面.于是做一个总结以供大家参考. 科普知识: python默认的 ...

  5. python安装文件乱码_Python程序在Windows终端乱码解决方法

    解决方法之一: 在程序中头声明 #!C:\Python27\python # -*- coding: utf-8 -*- ----- 在每一行输出的字符串,模仿下面: print u"你好& ...

  6. python读取文件乱码

    方法一:使用codecs import codecs f = codecs.open('nlpir/Readme.txt','r','GBK') line = f.readline() while l ...

  7. Python 写入文件乱码的问题

    如果写入excel.csv.txt存在中文,出现乱码很有可能就是编码没有设置正确 读取和写入的编码最好一致,否则很容易出现问题 对于pandas库的编码推荐 utf_8_sig read_csv(en ...

  8. python输出到文件乱码_解决python解析文件时输出乱码

    首先获取到json模块,encoding指定文件编码utf-8,errors报错时忽略错误,print()输出结果看看是否有问题. # -*- coding: utf-8 -*- import jso ...

  9. python打开文件写文件乱码_Python读写文件乱码问题

    对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...

最新文章

  1. 力扣解题——求根到叶子节点数字之和
  2. java wms open,OpenLayers - 调用WMS安全层
  3. Spring AOP本质(7)
  4. SaltStack安装Redis-第十篇
  5. cmakelists语法_CMakeList语法知识
  6. 计算机科学与技术 天涯,计算机科学与技术专业
  7. 最短路径 自己写的一个很简单的模板 dijkstra算法
  8. 使用 Python 批量下载喜马拉雅有声书音频
  9. android视频 转 gif,手机视频转gif转换器 安卓手机怎样把视频转化成GIF图片,手机视频转GIF方法...
  10. SQL SERVER数据库中勒索病毒 SQL数据库中病毒恢复数据
  11. stm32开发环境搭建及应用
  12. 遇到流氓软件不要慌,一篇文章帮您完全清理
  13. 初级第七旬06—初级课程第七旬试题
  14. exactly-once在Flink里的实现
  15. java swing 文本域_java文本域
  16. Task05|joyfulpandas|变形
  17. vue树形权限菜单_基于Vue的树形菜单之两种方式实现
  18. 有哪些堪称PPT神器插件?用好这10款,让你像开挂了一样设计PPT!
  19. javaSE探赜索隐之二<第二篇博客,磕磕绊绊,收货满满!加油>
  20. 批处理(bat)脚本语言(4) - FOR循环

热门文章

  1. 路由器连接上但上不了网如何操作
  2. javaScript---异步那些事(promise)(21/11/8)
  3. 计算机毕业设计Java城市智能公交系统(源码+系统+mysql数据库+lw文档)
  4. 详解重定向(HTTP状态码301/302/303/307/308)附案例
  5. 如何在几百万qps的网关服务中实现灵活调度策略
  6. 浮动元素将父级高度撑开
  7. 阿里在职5年,一个女测试工师的坎坷之路
  8. java 高cpu占用问题解决
  9. lzx和网页之间脚本交互调试方式
  10. 关于图片大小超过div盒子的讨论——补充