使用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之??碌某?? target=
Sep 12 Python
python列出目录下指定文件与子目录的方法
Jul 03 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 Python
python3爬取数据至mysql的方法
Jun 26 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
利用python求积分的实例
Jul 03 Python
python django model联合主键的例子
Aug 06 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 Python
Python安装使用Scrapy框架
Apr 12 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
python实现图像外边界跟踪操作
2020/07/13 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
C#笔试题集合
2013/06/21 面试题
J2EE相关知识面试题
2013/08/26 面试题
法律进企业活动方案
2014/03/04 职场文书
满月酒主持词
2014/03/27 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
品质口号大全
2014/06/17 职场文书
宣传活动总结范文
2014/07/01 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
聘用合同范本
2015/09/21 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书