Pythonはすべてのtxtファイルをutf-8形式で保存します

今日、txt保存形式を変換する必要があるという問題が発生しました。ファイルがめったに保存されない場合は、「メモ帳」(保存機能として保存)を使用して保存するか、メモ帳++エンコードを使用してxxエンコードに変換できますが、ファイルが多い場合はこの方法を使用できません。とった。

以前にbatスクリプトを確認しましたが、batスクリプトに慣れておらず、構文がわかりにくいため、pythonスクリプトを選択して実装しました。

次のスクリプトは、ファイルエンコーディング形式を自動的に取得し、それをUTF-8形式に変換して保存します。

import os
#files = os.listdir(".")#获取当前目录下的文件
from chardet.universaldetector import UniversalDetector


def get_filelist(path):
    Filelist = []
    for home, dirs, files in os.walk(path):
        for filename in files:
            # 文件名列表,包含完整路径
            if ".txt" in filename:
                Filelist.append(os.path.join(home, filename))
            # # 文件名列表,只包含文件名
            # Filelist.append( filename)

    return Filelist


def get_encode_info(file):
 with open(file, 'rb') as f:
     detector = UniversalDetector()
     for line in f.readlines():
         detector.feed(line)
         if detector.done:
             break
     detector.close()
     return detector.result['encoding']
 
def read_file(file):
    with open(file, 'rb') as f:
        return f.read()
 
def write_file(content, file):
    with open(file, 'wb') as f:
        f.write(content)
 
def convert_encode2utf8(file, original_encode, des_encode):
    file_content = read_file(file)
    file_decode = file_content.decode(original_encode,'ignore')
    file_encode = file_decode.encode(des_encode)
    write_file(file_encode, file)
 
if __name__ == "__main__":
    filePath = './'
    Filelist = get_filelist(filePath)
    for filename in Filelist:
        file_content = read_file(filename)
        encode_info = get_encode_info(filename)
        if encode_info != 'utf-8':
            convert_encode2utf8(filename, encode_info, 'utf-8')
        encode_info = get_encode_info(filename)
        print(encode_info)

 

おすすめ

転載: blog.csdn.net/juluwangriyue/article/details/109053440