news 2026/10/1 6:09:42

python语言TXT文件批量分割工具软件代码QZQ

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python语言TXT文件批量分割工具软件代码QZQ
importtkinterastkfromtkinterimportfiledialog,messagebox,ttkimportosclassTxtBatchSplitter:def__init__(self,root):self.root=root self.root.title("TXT文件批量分割工具")self.root.geometry("650x600")# 设置窗口大小# 核心变量self.source_file_path=tk.StringVar()# 源TXT文件路径self.output_dir=tk.StringVar()# 输出目录路径self.split_count=tk.IntVar(value=15)# 预设分割数量为15self.title_prefix=tk.StringVar(value="")# 标题前缀# 创建界面控件self.create_widgets()defcreate_widgets(self):# 1. 源文件选择区域frame1=ttk.LabelFrame(self.root,text="源文件设置",padding=10)frame1.pack(fill="x",padx=20,pady=10)ttk.Label(frame1,text="源TXT文件:").grid(row=0,column=0,sticky="w",padx=5,pady=5)ttk.Entry(frame1,textvariable=self.source_file_path,width=50,state="readonly").grid(row=0,column=1,padx=5,pady=5)ttk.Button(frame1,text="选择文件",command=self.select_source_file).grid(row=0,column=2,padx=5,pady=5)# 2. 分割参数设置区域frame2=ttk.LabelFrame(self.root,text="分割参数设置",padding=10)frame2.pack(fill="x",padx=20,pady=10)# 分割数量ttk.Label(frame2,text="分割数量:").grid(row=0,column=0,sticky="w",padx=5,pady=5)spin_box=ttk.Spinbox(frame2,from_=1,to=100,textvariable=self.split_count,width=10)spin_box.grid(row=0,column=1,padx=5,pady=5)ttk.Label(frame2,text="(默认预设15个文件)").grid(row=0,column=2,sticky="w",padx=5,pady=5)# 标题前缀ttk.Label(frame2,text="文件标题前缀:").grid(row=1,column=0,sticky="w",padx=5,pady=5)ttk.Entry(frame2,textvariable=self.title_prefix,width=20).grid(row=1,column=1,padx=5,pady=5)# 3. 输出目录选择区域frame3=ttk.LabelFrame(self.root,text="输出设置",padding=10)frame3.pack(fill="x",padx=20,pady=10)ttk.Label(frame3,text="输出目录:").grid(row=0,column=0,sticky="w",padx=5,pady=5)ttk.Entry(frame3,textvariable=self.output_dir,width=50,state="readonly").grid(row=0,column=1,padx=5,pady=5)ttk.Button(frame3,text="选择目录",command=self.select_output_dir).grid(row=0,column=2,padx=5,pady=5)# 4. 执行按钮区域frame4=ttk.Frame(self.root,padding=10)frame4.pack(fill="x",padx=20,pady=20)self.split_btn=ttk.Button(frame4,text="开始批量分割",command=self.start_split,width=20)# 修正后的居中方式self.split_btn.pack(padx=10,pady=5)# 5. 进度提示标签self.progress_label=ttk.Label(self.root,text="状态:等待执行",foreground="gray")self.progress_label.pack(pady=10)defselect_source_file(self):"""选择源TXT文件"""file_path=filedialog.askopenfilename(title="选择要分割的TXT文件",filetypes=[("文本文档","*.txt"),("所有文件","*.*")])iffile_path:self.source_file_path.set(file_path)self.progress_label.config(text=f"状态:已选择源文件:{os.path.basename(file_path)}",foreground="blue")defselect_output_dir(self):"""选择输出目录"""dir_path=filedialog.askdirectory(title="选择输出目录")ifdir_path:self.output_dir.set(dir_path)self.progress_label.config(text=f"状态:已选择输出目录:{dir_path}",foreground="blue")defread_source_file(self):"""读取源文件内容"""try:withopen(self.source_file_path.get(),"r",encoding="utf-8")asf:content=f.read()returncontentexceptExceptionase:messagebox.showerror("错误",f"读取源文件失败:{str(e)}")returnNonedefsplit_content(self,content):"""按分割数量均分内容(若无法均分,最后一个文件包含剩余内容)"""split_num=self.split_count.get()content_length=len(content)# 计算每个文件的基础长度base_length=content_length//split_num split_contents=[]foriinrange(split_num):start_idx=i*base_length# 最后一个文件取到末尾ifi==split_num-1:end_idx=content_lengthelse:end_idx=(i+1)*base_length sub_content=content[start_idx:end_idx]split_contents.append(sub_content)returnsplit_contentsdefgenerate_split_files(self,split_contents):"""生成分割后的TXT文件(包含对应标题、Java代码块标记和内容)"""output_dir=self.output_dir.get()title_prefix=self.title_prefix.get()split_num=self.split_count.get()source_filename=os.path.splitext(os.path.basename(self.source_file_path.get()))[0]try:foridx,sub_contentinenumerate(split_contents,1):# 构造每个分割文件的标题和文件名file_title=f"{title_prefix}{idx}(总第{idx}/{split_num}个)"# 构造输出文件名output_filename=f"{source_filename}{idx}.txt"output_filepath=os.path.join(output_dir,output_filename)# 写入文件(标题 + Java代码块开始 + 内容 + Java代码块结束 + 空行)withopen(output_filepath,"w",encoding="utf-8")asf:# 写入标题f.write(f"======{file_title}======\n")# 标题后添加```java\n(Java代码块开始标记)f.write("```java\n")f.write("\n")# 空行分隔标题标记和内容# 写入分割后的子内容f.write(sub_content)# 内容末尾添加```\n\n\n(Java代码块结束标记 + 3个换行符)f.write("\n```\n\n\n")self.progress_label.config(text=f"状态:正在生成第{idx}/{split_num}个文件...",foreground="orange")self.root.update_idletasks()# 刷新界面messagebox.showinfo("成功",f"已成功将文件分割为{split_num}个TXT文件!\n输出目录:{output_dir}")self.progress_label.config(text=f"状态:分割完成!共生成{split_num}个文件",foreground="green")exceptExceptionase:messagebox.showerror("错误",f"生成文件失败:{str(e)}")self.progress_label.config(text="状态:分割失败",foreground="red")defstart_split(self):"""执行分割主流程"""# 校验参数ifnotself.source_file_path.get():messagebox.warning("提示","请先选择要分割的源TXT文件!")returnifnotself.output_dir.get():messagebox.warning("提示","请先选择输出目录!")returnifself.split_count.get()<1:messagebox.warning("提示","分割数量不能小于1!")return# 读取源文件self.progress_label.config(text="状态:正在读取源文件...",foreground="orange")self.root.update_idletasks()content=self.read_source_file()ifnotcontent:return# 分割内容self.progress_label.config(text="状态:正在分割内容...",foreground="orange")self.root.update_idletasks()split_contents=self.split_content(content)# 生成文件self.progress_label.config(text="状态:正在生成分割文件...",foreground="orange")self.root.update_idletasks()self.generate_split_files(split_contents)if__name__=="__main__":root=tk.Tk()app=TxtBatchSplitter(root)root.mainloop()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 2:28:08

C#开发者也能玩转AI语音:集成VoxCPM-1.5接口调用示例

C#开发者也能玩转AI语音&#xff1a;集成VoxCPM-1.5接口调用示例 在智能语音应用日益普及的今天&#xff0c;越来越多的企业和开发者希望为自己的桌面程序、Web后台或交互式工具添加自然流畅的中文语音合成功能。然而&#xff0c;对于深耕.NET生态的C#工程师而言&#xff0c;一…

作者头像 李华
网站建设 2026/9/30 11:17:03

AlphaFold大规模蛋白质结构预测实战:从单序列到批处理的效率突破

面对海量蛋白质序列的结构预测需求&#xff0c;传统逐一处理方式已无法满足现代生物学研究的高效要求。本文为你揭秘AlphaFold批量处理的核心技术&#xff0c;构建一套完整的自动化流水线&#xff0c;实现蛋白质结构预测效率的指数级提升。 【免费下载链接】alphafold Open sou…

作者头像 李华
网站建设 2026/9/29 10:03:06

UltraISO注册码最新版防伪查询系统接入VoxCPM-1.5-TTS-WEB-UI

UltraISO注册码防伪系统集成VoxCPM-1.5-TTS语音播报的技术实践 在软件盗版与授权欺诈依然猖獗的今天&#xff0c;传统的注册码验证方式正面临信任危机。用户输入一串字符&#xff0c;页面返回“有效”或“无效”的文字提示——这种单调的交互不仅容易被伪造截图欺骗&#xff0c…

作者头像 李华
网站建设 2026/9/27 21:04:10

Sharingan流量录制回放工具:从入门到精通的完整指南

Sharingan流量录制回放工具&#xff1a;从入门到精通的完整指南 【免费下载链接】sharingan Sharingan&#xff08;写轮眼&#xff09;是一个基于golang的流量录制回放工具&#xff0c;适合项目重构、回归测试等。 项目地址: https://gitcode.com/gh_mirrors/sha/sharingan …

作者头像 李华
网站建设 2026/9/30 8:20:20

HTML前端如何对接VoxCPM-1.5-TTS的Web UI服务

HTML前端如何对接VoxCPM-1.5-TTS的Web UI服务 在语音交互日益普及的今天&#xff0c;越来越多的产品开始集成文本转语音&#xff08;TTS&#xff09;能力——从智能客服到有声读物&#xff0c;从无障碍阅读到AI主播&#xff0c;高质量语音合成正成为用户体验的关键一环。然而&a…

作者头像 李华
网站建设 2026/9/27 14:05:46

掌握这3种Python 3D引擎优化技术,渲染效率提升8倍不是梦

第一章&#xff1a;Python 3D渲染引擎概述Python 在科学计算与可视化领域拥有强大生态&#xff0c;近年来也被广泛应用于轻量级 3D 渲染引擎的开发。借助如 OpenGL 绑定库、图形框架和数学运算工具&#xff0c;Python 能够构建具备基础渲染能力的 3D 场景系统&#xff0c;适用于…

作者头像 李华