NotesUESTC/工具脚本/Code2Utf8.py

57 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import os
import chardet
import codecs
import tkinter as tk
from tkinter import filedialog
# 获取给定目录中的所有文件和子目录
def get_all_files(directory):
files = []
# 遍历目录中的所有文件和子目录
for root, subdirs, files_list in os.walk(directory):
for file in files_list:
file_path = os.path.join(root, file)
files.append(file_path)
return files
# 检测文件编码格式
def detect_encoding(file_path):
with open(file_path, 'rb') as file:
raw_data = file.read(8192)
return chardet.detect(raw_data)['encoding']
# 将文件转换为UTF-8编码格式
def convert_to_utf8(file_path, from_encoding):
with codecs.open(file_path, 'r', encoding=from_encoding, errors='ignore') as file:
lines = file.read()
with codecs.open(file_path, 'w', encoding='utf-8') as file:
file.write(lines)
# 将给定目录下的所有文件转换为UTF-8编码格式
def convert_files_in_directory(directory_path):
files = get_all_files(directory_path)
for file in files:
if file.endswith('.py') or file.endswith('.c') or file.endswith('.cpp') or file.endswith('.h'):
from_encoding = detect_encoding(file)
if from_encoding != 'utf-8':
print("file = " + file + "encoding = " + from_encoding)
convert_to_utf8(file, from_encoding)
print('所有文件均已转换为UTF-8编码格式')
# 按钮单击时执行的函数
def browse_folder():
folder_path = filedialog.askdirectory()
convert_files_in_directory(folder_path)
# 创建一个Tkinter窗口其中包含一个选择文件夹的按钮
window = tk.Tk()
window.geometry('200x100')
button = tk.Button(text='选择文件夹', command=browse_folder)
button.pack()
window.mainloop()