使用Python编写的自动代码编辑程序示例,具备基础的文件处理、正则替换和备份功能。程序支持图形界面操作,可以在Windows 11上直接运行:
python
import os
import re
import shutil
import tkinter as tk
from tkinter import filedialog, messagebox
class CodeEditorApp:
def __init__(self, master):
self.master = master
master.title("自动代码编辑器")
master.geometry("600x400")
# 创建界面组件
self.create_widgets()
def create_widgets(self):
# 目录选择
tk.Label(self.master, text="工作目录:").grid(row=0, column=0, padx=5, pady=5)
self.dir_entry = tk.Entry(self.master, width=50)
self.dir_entry.grid(row=0, column=1, padx=5, pady=5)
tk.Button(self.master, text="浏览...", command=self.select_directory).grid(row=0, column=2)
# 文件扩展名
tk.Label(self.master, text="文件类型:").grid(row=1, column=0)
self.ext_entry = tk.Entry(self.master, width=50)
self.ext_entry.insert(0, "py, txt, java, cpp") # 默认支持的文件类型
self.ext_entry.grid(row=1, column=1)
# 查找替换规则
tk.Label(self.master, text="查找内容:").grid(row=2, column=0)
self.find_entry = tk.Entry(self.master, width=50)
self.find_entry.grid(row=2, column=1)
tk.Label(self.master, text="替换为:").grid(row=3, column=0)
self.replace_entry = tk.Entry(self.master, width=50)
self.replace_entry.grid(row=3, column=1)
# 正则表达式选项
self.regex_var = tk.BooleanVar()
tk.Checkbutton(self.master, text="使用正则表达式", variable=self.regex_var).grid(row=4, column=1, sticky=tk.W)
# 操作按钮
tk.Button(self.master, text="执行替换", command=self.run_processing, bg="#4CAF50", fg="white").grid(row=5, column=1, pady=10)
# 日志显示
self.log_text = tk.Text(self.master, height=10, width=70)
self.log_text.grid(row=6, column=0, columnspan=3, padx=5, pady=5)
def select_directory(self):
directory = filedialog.askdirectory()
if directory:
self.dir_entry.delete(0, tk.END)
self.dir_entry.insert(0, directory)
def log_message(self, message):
self.log_text.insert(tk.END, message + "\n")
self.log_text.see(tk.END)
def backup_files(self, file_path):
"""创建文件备份"""
backup_dir = os.path.join(self.dir_entry.get(), "backup")
os.makedirs(backup_dir, exist_ok=True)
shutil.copy2(file_path, backup_dir)
self.log_message(f"创建备份: {os.path.basename(file_path)}")
def process_file(self, file_path):
"""处理单个文件"""
try:
with open(file_path, "r", encoding="utf-8") as f:
content = f.read()
original_content = content
find_pattern = self.find_entry.get()
replace_with = self.replace_entry.get()
if self.regex_var.get():
content = re.sub(find_pattern, replace_with, content)
else:
content = content.replace(find_pattern, replace_with)
if content != original_content:
self.backup_files(file_path)
with open(file_path, "w", encoding="utf-8") as f:
f.write(content)
self.log_message(f"已修改: {os.path.basename(file_path)}")
except Exception as e:
self.log_message(f"错误处理 {file_path}: {str(e)}")
def run_processing(self):
"""执行批处理"""
if not self.dir_entry.get():
messagebox.showerror("错误", "请先选择工作目录")
return
extensions = [ext.strip() for ext in self.ext_entry.get().split(",")]
file_count = 0
for root, _, files in os.walk(self.dir_entry.get()):
for file in files:
if any(file.endswith(ext) for ext in extensions):
file_path = os.path.join(root, file)
self.process_file(file_path)
file_count += 1
self.log_message(f"处理完成!共扫描 {file_count} 个文件")
messagebox.showinfo("完成", "文件处理完成!")
if __name__ == "__main__":
root = tk.Tk()
app = CodeEditorApp(root)
root.mainloop()
使用说明:
-
将代码保存为
auto_code_editor.py
-
安装依赖:
bash
复制
pip install pyinstaller
-
打包为exe:
bash
复制
pyinstaller --onefile --windowed auto_code_editor.py
-
生成的exe文件在
dist
目录中
主要功能:
-
选择工作目录
-
指定要处理的文件扩展名(多个用逗号分隔)
-
支持普通文本替换和正则表达式替换
-
自动创建备份文件(保存在工作目录/backup)
-
实时显示操作日志
-
图形界面操作
注意事项:
-
首次运行前建议在测试目录试用
-
重要文件请提前备份
-
使用正则表达式时请确保模式正确
-
支持大多数文本格式文件(代码文件、配置文件等)
高级功能扩展建议:
-
添加撤销功能(从备份恢复)
-
支持多组查找替换规则
-
添加文件编码自动检测
-
支持保存/加载配置方案
-
添加文件过滤(按大小、日期等)
-
集成代码格式化功能(如black、prettier)
这个程序可以处理常见的代码编辑需求,如:
-
批量重命名变量/函数
-
更新版权信息
-
修改API地址
-
调整代码格式
-
修复常见代码警告等