使用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 相关文章推荐
MySQL最常见的操作语句小结
May 07 Python
python数据类型_字符串常用操作(详解)
May 30 Python
Python开发的HTTP库requests详解
Aug 29 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
pyqt5 从本地选择图片 并显示在label上的实例
Jun 13 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
Python reversed函数及使用方法解析
Mar 17 Python
给ubuntu18安装python3.7的详细教程
Jun 08 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
python中str内置函数用法总结
Dec 27 Python
Python实现智慧校园自动评教全新版
Jun 18 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
详解django自定义中间件处理
2018/11/21 Python
Python实现代码统计工具
2019/09/19 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
python 初始化一个定长的数组实例
2019/12/02 Python
基于python调用psutil模块过程解析
2019/12/20 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
中层干部竞争上岗演讲稿
2014/01/13 职场文书
年终总结会主持词
2014/03/25 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
2015财务年度工作总结范文
2015/05/04 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL