使用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使用新浪微博API发送微博的例子
Apr 10 Python
深入理解Python中字典的键的使用
Aug 19 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
Numpy之reshape()使用详解
Dec 26 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
pandas实现导出数据的四种方式
Dec 13 Python
python中pickle模块浅析
Dec 29 Python
pytorch常用数据类型所占字节数对照表一览
May 17 Python
用Python生成会跳舞的美女
Jan 18 Python
Python利用zhdate模块实现农历日期处理
Mar 31 Python
Python实现简单得递归下降Parser
May 02 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 mssql 数据库分页SQL语句
2008/12/16 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
2017/02/23 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
Python高效编程技巧
2013/01/07 Python
Python实现的多线程端口扫描工具分享
2015/01/21 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
python对csv文件追加写入列的方法
2019/08/01 Python
Python实现线性插值和三次样条插值的示例代码
2019/11/13 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
社区党总支书记先进事迹材料
2014/01/24 职场文书
采购部经理岗位职责
2014/02/10 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
文明之星事迹材料
2014/05/09 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
学校运动会通讯稿
2015/07/18 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL