使用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的发展史
Sep 26 Python
Python的Flask框架中@app.route的用法教程
Mar 31 Python
机器学习10大经典算法详解
Dec 07 Python
python opencv设置摄像头分辨率以及各个参数的方法
Apr 02 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
Django模板语言 Tags使用详解
Sep 09 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
使用pickle存储数据dump 和 load实例讲解
Dec 30 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
python文件及目录操作代码汇总
Jul 08 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常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
Python编程中的反模式实例分析
2014/12/08 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
python得到单词模式的示例
2018/10/15 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
光盘行动倡议书
2014/02/02 职场文书
公务员转正考察材料
2014/02/07 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
《永远的白衣战士》教学反思
2014/04/25 职场文书
公司经理任命书
2014/06/05 职场文书
企业2014年度工作总结
2014/12/10 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
退税申请报告怎么写
2015/05/18 职场文书
交通处罚决定书
2015/06/24 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python