1
0
Fork 0
NotesUESTC/工具脚本/Code2Utf8.py

57 lines
1.8 KiB
Python
Raw Normal View History

2024-03-27 11:19:08 +08:00
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()