zoukankan      html  css  js  c++  java
  • 103.文件编码转换

    文件编码格式转换

    文件格式转换:所有的文件都可以转成unicode格式也就是python3中的str,之后通过编码和解码这两种方式可以转化为任何格式
    比如: utf-8 <=> unicode <======>gbk ,中间必定是通用的转换格式

    import codecs
    import chardet
    
    
    """下面是codecs模块中的一个方法的测试"""
    # data = "你好".encode("gbk")
    # with codecs.open("file1.txt", "wb") as f:
    #     encode_file = codecs.EncodedFile(f, data_encoding='gbk', file_encoding='utf-8')
    #     # 写入数据是通过data_encoding进行解码之后,通过file_encoding进行编码之后写入文件,
    #     # 所以源文件上gbk格式,通过这种方式之后变成了utf-8
    #     encode_file.write(data)
    #
    # with codecs.open("file1.txt", "rb") as f:
    #     decode_file = codecs.EncodedFile(f, data_encoding="gbk", file_encoding="utf-8")
    #     # 读取数据时,通过file_encoding对文件进行解码,解码之后使用date_encoding对数据进行编码返回
    #     print(decode_file.read().decode("gbk"))
    
    
    def convert_file(src_path, src_encoding, dest_encoding, desc_path=None):
        """
        这个一个文件编码转换函数
        src_path: 指的是文件的路径
        src_encoding: 是文件的原来的编码格式
        dest_encoding: 是你需要将其转换成的格式
        desc_path: 默认为空时和src_path一样
        """
        if not desc_path:
            desc_path = src_path
    
        f_r = open(src_path, "rb+")
        src_data = f_r.read().decode(src_encoding)
        desc_data = src_data.encode(dest_encoding)
    
        # 本来想使用这种方式但是发现特别麻烦,传入EncodedFile的文件对象很难控制还不如原来的
        # encode_file = codecs.EncodedFile(f_r, data_encoding=src_encoding, file_encoding=dest_encoding)
        # # 写入数据是通过data_encoding进行解码之后,通过file_encoding进行编码之后写入文件,
        # # 所以源文件上gbk格式,通过这种方式之后变成了utf-8
        # data = encode_file.read()
    
        f_w = open(desc_path, "wb")
        f_w.write(desc_data)
    
        # 关闭资源
        f_r.close()
        f_w.close()
    
    
    if __name__ == '__main__':
        path = r"C:UsersyztPycharmProjectsstudy1file1.txt"
        convert_file(path, "utf-8", "gbk")
    
    
    
  • 相关阅读:
    方便操作的命名范围scope
    使用Emmet加速Web前端开发
    Beanstalkd一个高性能分布式内存队列系统
    2000年互联网泡沫
    简单有效的kmp算法
    文本比较算法:计算文本的相似度
    字符串的四则运算
    文本比较算法:Needleman/Wunsch算法
    两则面试题(动态规划)
    文本比较算法:编辑距离
  • 原文地址:https://www.cnblogs.com/liuzhanghao/p/13819734.html
Copyright © 2011-2022 走看看