今日、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)