当前位置:  编程技术>python

使用python的chardet库获得文件编码并修改编码

    来源: 互联网  发布时间:2014-09-04

    本文导语:  首先需要安装chardet库,有很多方式,我才用的是比较笨的方式:sudo pip install chardet 代码如下:#!/usr/bin/env python# coding: UTF-8import sysimport osimport chardet def print_usage():  print '''usage:  change_charset [file|directory] [charset] [output file]n...

首先需要安装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()

    
 
 

您可能感兴趣的文章:

  • c#字符串编码编码(encoding)使用方法示例
  • JSP页面中文传递参数使用escape编码
  • linux上使用C++如何处理utf-8编码的字段
  • 使用iconv批量改变文件编码的shell脚本
  • 使用sendmail发信时,subject出现乱码的问题。(使用了标准的base64编码,outlook的时候看是正常编码,别的服务器还是有乱码例如mozilla收
  • 使用标准SAX解析XML文档如何获取文档编码信息及约束它的dtd文件路径.
  • linux上的 中文文件名的 字体 是使用什么编码的???
  • linux下使用vim 编码的补全问题
  • MYSQL使用GBK编码,该如何处理
  • 使用UTF8编码通过gsoap访问.Net Web Service依然不能正确显示中文
  • 基于Java字符编码的使用详解
  • 使用游长编码对字符串压缩 Run Length编码示例
  • php使用json_encode对变量json编码
  • 解救远程编码的coder, 使用VC+VA编写/编译/运行/调试linux程序
  • C++类URL编码和解码使用技巧
  • 如何获得Linux的CPU使用率
  • 如何获得系统硬盘使用情况,急!!!
  • 求救:关于在BSD下如何通过文件路径使用核内函数获得文件句柄?
  • 使用tcp协议发送数据, 如果获得系统底层将包发到客户端之间的耗时?
  • 使用PackageManager获得应用信息实例方法
  • 在linux下如何获得CPU使用情况?
  • 怎样获得系统已经使用的端口号
  • 哪里能获得文本框与弹出日历联合使用的HTML源码?
  • 如何从/proc文件系统中获得CPU的使用率
  • 请问在linux下如何获得本机mac地址 不使用socket这个函数
  • 使用getservbyname()无法获得服务的端口号,怎么回事?
  • [急]linux对于c 如何获得一个进程及其子进程从开始到结束 它的最大CPU% MEM%使用率
  • 在UNIX中如何通过程序获得主机的资源使用状况,CPU利用率等。
  • 如何获得CPU内存磁盘等使用情况?
  • 谁有top命令的源码?如何获得cpu使用率
  • Oracle10g使用sql获得ADDM报告以及利用ADDM监控表的dml情况
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • Jsp可否使用带有GUI的JavaBean,如何使用? iis7站长之家
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • c/c++预处理命令预#,##使用介绍
  • asp程序使用的access在Linux下如何使用!
  • 在div中使用css让文字底部对齐的方法
  • 新装的Linux使用root用户不能使用FTP?
  • Python namedtuple(命名元组)使用实例
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3