使用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的web框架编写前端模版的教程
Apr 30 Python
Python绑定方法与非绑定方法详解
Aug 18 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
python实现自主查询实时天气
Jun 22 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
python实现烟花小程序
Jan 30 Python
Python函数和模块的使用总结
May 20 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 Python
python计算导数并绘图的实例
Feb 29 Python
Django ORM 查询表中某列字段值的方法
Apr 30 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
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
很好用的PHP数据库类
2009/05/27 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
pandas实现选取特定索引的行
2018/04/20 Python
Django框架模板的使用方法示例
2019/05/25 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
实习科室评语
2015/01/04 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
在校证明模板
2015/06/17 职场文书
追悼会悼词大全
2015/06/23 职场文书
正确使用MySQL update语句
2021/05/26 MySQL