使用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 相关文章推荐
python封装对象实现时间效果
Apr 23 Python
跟老齐学Python之不要红头文件(2)
Sep 28 Python
Python自动化测试ConfigParser模块读写配置文件
Aug 15 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
Python 做曲线拟合和求积分的方法
Dec 29 Python
Python实现的矩阵转置与矩阵相乘运算示例
Mar 26 Python
python实现车牌识别的示例代码
Aug 05 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
python爬虫模块URL管理器模块用法解析
Feb 03 Python
python抢购软件/插件/脚本附完整源码
Mar 04 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作为Shell脚本语言使用
2006/10/09 PHP
PHP开发过程中常用函数收藏
2009/12/14 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
PHP多进程简单实例小结
2019/11/09 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
Python中关于字符串对象的一些基础知识
2015/04/08 Python
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
python随机数分布random测试
2018/08/27 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
python 录制系统声音的示例
2020/12/21 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
大学四年的个人自我评价
2014/01/14 职场文书
2015年酒店工作总结
2015/04/28 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
Oracle 死锁的检测查询及处理
2021/09/25 Oracle
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js