Heim >Backend-Entwicklung >Python-Tutorial >So verwenden Sie Python, um das Codierungsformat von Textdateien stapelweise zu ändern

So verwenden Sie Python, um das Codierungsformat von Textdateien stapelweise zu ändern

WBOY
WBOYnach vorne
2023-05-01 19:13:112535Durchsuche

Verwenden Sie Python, um das Codierungsformat von Textdateien stapelweise zu ändern.

Transformieren Sie das Codierungsformat von Textdateien wie ASCII, GB2312, UTF8 usw. stapelweise und konvertieren Sie es gegenseitig Die Größe des Zeichensatzes ist utf8> gb2312>ascii, daher ist es am besten, gb2312 in utf8 zu konvertieren, da sonst leicht verstümmelte Zeichen angezeigt werden. Der Hauptunterschied zwischen gb2312 und utf-8: Chinesische Schriftzeichen)

Informationen zur Speichergröße

: UTF-8> und lädt schneller)#🎜 🎜#Über den Anwendungsbereich

: gb2312 wird hauptsächlich auf dem chinesischen Festland verwendet. Es handelt sich um einen lokalisierten Zeichensatz, der UTF-8 enthält Es wird in allen Ländern der Welt verwendet und ist universell. UTF-8-codierter Text kann in Browsern in verschiedenen Ländern angezeigt werden, die den UTF8-Zeichensatz unterstützen.

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)
Ergänzung: Python implementiert die Stapelkonvertierung von Dateien in das UTF-8-Format

Python implementiert die Stapelkonvertierung von Dateien in das UTF-8-Format

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)

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Python, um das Codierungsformat von Textdateien stapelweise zu ändern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen