使用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继承问题
May 29 Python
Python中的pack和unpack的使用
Mar 12 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
Python Django框架实现应用添加logging日志操作示例
May 17 Python
使用python爬取微博数据打造一颗“心”
Jun 28 Python
PyCharm第一次安装及使用教程
Jan 08 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
Python unittest框架操作实例解析
Apr 13 Python
python代码中怎么换行
Jun 17 Python
Python  word实现读取及导出代码解析
Jul 09 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
python爬取youtube视频的示例代码
Mar 03 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 Class 文章
2007/04/04 PHP
PHP字符串 ==比较运算符的副作用
2009/10/21 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
简单介绍Python中的readline()方法的使用
2015/05/24 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
Pytorch释放显存占用方式
2020/01/13 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
HR喜欢的自荐信格式
2013/10/08 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
优秀团员事迹材料
2014/12/25 职场文书
离职员工给领导和同事的感谢信
2015/11/03 职场文书
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript