Comment utiliser Python pour modifier par lots le format d'encodage des fichiers texte

WBOY
Libérer: 2023-05-01 19:13:11
avant
2463 Les gens l'ont consulté

Utilisez Python pour modifier par lots le format d'encodage des fichiers texte

Convertissez le format d'encodage des fichiers texte par lots, tels que ascii, gb2312, utf8, etc., et convertissez-vous les uns les autres, à en juger par la taille du jeu de caractères, utf8>. ;gb2312>ascii, il est donc préférable de convertir gb2312 Convert en utf8, sinon des caractères tronqués apparaîtront facilement.

La principale différence entre gb2312 et utf-8 :

À propos de la taille de la police : UTF-8 > gb2312 (utf8 est plus volumineux et plus lent à charger, gb2312 est plus petit et plus rapide à charger)

À propos du champ d'application : gb2312 est principalement utilisé en Chine continentale et est un jeu de caractères localisé qui inclut tous les pays de la Chine. le monde qui a besoin de l'utiliser. Les caractères sont des codes internationaux et sont très polyvalents. Le texte codé en UTF-8 peut être affiché sur les navigateurs de divers pays prenant en charge le jeu de caractères UTF8.

import sys
import chardet
import codecs
 
def get_encoding_type(fileName):
    '''print the encoding format of a txt file '''
    with open(fileName, 'rb') as f:
        data = f.read()
        encoding_type = chardet.detect(data)
        #print(encoding_type)
        return encoding_type
        # such as {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
 
def convert_encoding_type(filename_in, filename_out, encode_in="gb2312", encode_out="utf-8"):
    '''convert encoding format of txt file '''
    #filename_in = 'flash.c'
    #filename_out = 'flash_gb2312.c'
    #encode_in = 'utf-8'  # 输入文件的编码类型
    #encode_out = 'gb2312'# 输出文件的编码类型
    with codecs.open(filename=filename_in, mode='r', encoding=encode_in) as fi:
        data = fi.read()
        with open(filename_out, mode='w', encoding=encode_out) as fo:
            fo.write(data)
            fo.close()
        # with open(filename_out, 'rb') as f:
        #     data = f.read()
        #     print(chardet.detect(data))
 
if __name__=="__main__":
    # fileName = argv[1]
    # get_encoding_type(fileName)
    # convert_encoding_type(fileName, fileName)
    filename_of_files = sys.argv[1]   #the file contain full file path at each line
    with open(filename_of_files, 'rb') as f:
        lines = f.readlines()
        for line in lines:
            fileName = line[:-1]
            encoding_type = get_encoding_type(fileName)
            if encoding_type['encoding']=='GB2312':
                print(encoding_type)
                convert_encoding_type(fileName, fileName)
                print(fileName)
Copier après la connexion

Supplément : python implémente la conversion par lots des fichiers au format utf-8python implémente la conversion par lots des fichiers au format utf-8

xml_path = './'
with open(xml_path , 'rb+') as f:
    content = f.read()
    codeType = detect(content)['encoding']
    content = content.decode(codeType, "ignore").encode("utf8")
    fp.seek(0)
    fp.write(content)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!