使用python的chardet库获得文件编码并修改编码


Posted in Python onJanuary 22, 2014

首先需要安装chardet库,有很多方式,我才用的是比较笨的方式:sudo pip install chardet

#!/usr/bin/env python
# coding: UTF-8
import sys
import os
import chardet 
def print_usage():

print '''usage:

change_charset [file|directory] [charset] [output file]\n

for example:

  change 1.txt utf-8 n1.txt

  change 1.txt utf-8

  change . utf-8

  change 1.txt
'''
def get_charset(s):

return chardet.detect(s)['encoding']
 
def remove(file_name):

os.remove(file_name)
 
def change_file_charset(file_name, output_file_name, charset):

f = open(file_name)

s = f.read()

f.close()

if file_name == output_file_name or output_file_name == "":


remove(file_name)

old_charset = get_charset(s)

u = s.decode(old_charset)

if output_file_name == "":


output_file_name = file_name

f = open(output_file_name, 'w')

s = u.encode(charset)

f.write(s)

f.close()
 
def do(file_name, output_file_name, charset):

if os.path.isdir(file_name):


for item in os.listdir(file_name):



try:




if os.path.isdir(file_name+"/"+item):





do(file_name+"/"+item, "", charset)




else:





change_file_charset(file_name+"/"+item, "", charset)



except OSError, e:




print e

else:


change_file_charset(file_name, output_file_name, charset)
 
if __name__ == '__main__':

length = len(sys.argv)

if length == 1:


print_usage()

elif length == 2:


do(sys.argv[1], "", "utf-8")

elif length == 3:


do(sys.argv[1], "", sys.argv[2])

elif length == 4:


do(sys.argv[1], sys.argv[3], sys.argv[2])

else:


print_usage()
Python 相关文章推荐
Eclipse + Python 的安装与配置流程
Mar 05 Python
初学Python实用技巧两则
Aug 29 Python
Python常用随机数与随机字符串方法实例
Apr 09 Python
Python时间模块datetime、time、calendar的使用方法
Jan 13 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 Python
python编程嵌套函数实例代码
Feb 11 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 Python
python 对一幅灰度图像进行直方图均衡化
Oct 27 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
Dec 23 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 Python
使用go和python递归删除.ds store文件的方法
Jan 22 #Python
python学习手册中的python多态示例代码
Jan 21 #Python
python pdb调试方法分享
Jan 21 #Python
python发送邮件接收邮件示例分享
Jan 21 #Python
python逐行读取文件内容的三种方法
Jan 20 #Python
c++生成dll使用python调用dll的方法
Jan 20 #Python
python中getattr函数使用方法 getattr实现工厂模式
Jan 20 #Python
You might like
php调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
php session 写入数据库
2016/02/13 PHP
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
javascript闭包的理解
2015/04/01 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
Eclipse + Python 的安装与配置流程
2013/03/05 Python
详解python while 函数及while和for的区别
2018/09/07 Python
Django REST framework内置路由用法
2019/07/26 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
机械专业毕业生推荐信范文
2013/11/25 职场文书
中介业务员岗位职责
2014/04/09 职场文书
优秀学生评语大全
2014/04/25 职场文书
护士节活动总结
2014/08/29 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
Python数据类型最全知识总结
2021/05/31 Python