Python按條件批量刪除TXT文件行工具
1.簡(jiǎn)介
一個(gè)由Python編寫的可根據(jù)TXT文件按條件批量刪除行工具,資源及文件已打包成exe文件
功能:
- 批量刪除行含關(guān)鍵字或詞的行(多個(gè)關(guān)鍵字/詞中間用空格隔開(kāi))
- 批量刪除空行
- 批量字符小于多少(可設(shè)定)刪除行
- 批量刪除匹配正則的行
使用方法:
- 點(diǎn)擊打開(kāi)文件批量選擇TXT文件(可以直接拖拽)。
- 需要的功能前打勾,并配置。
- 點(diǎn)擊【執(zhí)行】即可進(jìn)行轉(zhuǎn)換。
- 最后會(huì)生成原文件名+_new.txt的文件。
2.運(yùn)行效果
3.相關(guān)源碼
import os import re import time from tkinter import ttk, filedialog, messagebox, INSERT, Tk, Button, Text, Scrollbar, \ HORIZONTAL, VERTICAL, IntVar, Checkbutton, Label, StringVar, Entry # 有Combobox、LabelFrame 組件時(shí)需要本語(yǔ)句 import windnd ui_pos = { "title": "TXT文件處理助手", "geometry": "450x300", # 長(zhǎng)乘寬 } FilePaths = () def clearAll(): ctrl_FileListBox.delete(1.0, "end") # 清空文件路徑 str_KeyWord.set("") str_KeyNum.set("") def getTxtFiles(): global FilePaths files = filedialog.askopenfilenames(filetypes=[('text files', '.txt')]) if files: FilePaths = files for f_name in files: ctrl_FileListBox.insert('end', f_name) ctrl_FileListBox.insert(INSERT, '\n') else: messagebox.showinfo(title='提示', message='沒(méi)有選擇任何文件!') def KeyWordScan(keys, s): key_words = keys.split(" ") t_f = False for key_word in key_words: if key_word in s: t_f = True return t_f def ctrl_StartBtn_clicked(): has_key_words = int_CheckBox1.get() key_words = str_KeyWord.get() has_empty_line = int_CheckBox2.get() has_N = int_CheckBox3.get() n = str_KeyNum.get() has_zz = int_CheckBox4.get() zz = str_zz.get() try: for file in FilePaths: # 循環(huán)遍歷文件 s_file = open(os.path.splitext(file)[0] + "_new" + os.path.splitext(file)[1], 'w+') # 文件保存位置 f_lines = open(file, encoding='utf8').readlines() # 打開(kāi)文件,讀入每一行 for s in f_lines: # s: 每一行的內(nèi)容 # 操作1 if has_key_words: if KeyWordScan(key_words, s): continue # 操作2 if has_empty_line: if len(s.strip()) == 0: continue # 操作3: if has_N: if len(s.strip()) < int(n): continue if has_zz: if re.match(zz, s.strip()): continue s_file.write(s) s_file.close() # 關(guān)閉文件 except Exception as e: with open("log", "a+") as f: f.write(time.strftime("%Y-%m-%d, %H:%M:%S", time.localtime()) + "\n") f.write(repr(e) + "\n") def draggedFiles(files): msg = '\n'.join((item.decode('gbk') for item in files)) for f_name in files: ctrl_FileListBox.insert('end', f_name) ctrl_FileListBox.insert(INSERT, '\n') print(msg) root = Tk() # 設(shè)定窗體變量 root.geometry(ui_pos["geometry"]) # 格式('寬x高+x+y')其中x、y為位置 root.title(ui_pos["title"]) windnd.hook_dropfiles(root, func=draggedFiles) ctrl_Frame1 = ttk.LabelFrame(root, text='選項(xiàng)') ctrl_Frame1.place(x=14, y=72, width=388, height=140) ctrl_StartBtn = Button(root, text='執(zhí)行', font=('宋體', '9'), command=ctrl_StartBtn_clicked) # 可在括號(hào)內(nèi)加上調(diào)用函數(shù)部分 ,command=ctrl_StartBtn_clicked ctrl_StartBtn.place(x=22, y=250, width=72, height=29) ctrl_QuitBtn = Button(root, text='清除', font=('宋體', '9'), command=clearAll) # 可在括號(hào)內(nèi)加上調(diào)用函數(shù)部分 ,command=ctrl_QuitBtn_clicked ctrl_QuitBtn.place(x=108, y=250, width=72, height=29) ctrl_FileListBox = Text(root, font=('宋體', '9')) ctrl_FileListBox.place(x=14, y=7, width=260, height=38) ctrl_Scrollbar1 = Scrollbar(root, command=ctrl_FileListBox.xview, orient=HORIZONTAL) ctrl_Scrollbar1.place(x=14, y=46, width=261, height=16) ctrl_Scrollbar2 = Scrollbar(root, command=ctrl_FileListBox.yview, orient=VERTICAL) ctrl_Scrollbar2.place(x=275, y=7, width=16, height=39) ctrl_FileListBox.config(xscrollcommand=ctrl_Scrollbar1.set, yscrollcommand=ctrl_Scrollbar2.set, wrap='none') int_CheckBox1 = IntVar() # 綁定變量 ctrl_CheckBox1 = Checkbutton(ctrl_Frame1, text='刪除行含關(guān)鍵字或詞的行', variable=int_CheckBox1, font=('宋體', '9')) ctrl_CheckBox1.place(x=14, y=14, height=22) # 考慮到對(duì)齊問(wèn)題,不列入寬度,需要時(shí)手動(dòng)加入 width=130 ctrl_CheckBox1.deselect() # 默認(rèn)為未選中狀態(tài) Ctrl_Label1 = Label(ctrl_Frame1, text="關(guān)鍵字:") Ctrl_Label1.place(x=180, y=14, width=55, height=22) str_KeyWord = StringVar() # 綁定變量 ctrl_KeyWord = Entry(ctrl_Frame1, textvariable=str_KeyWord, font=('宋體', '9')) ctrl_KeyWord.place(x=230, y=14, width=150, height=22) int_CheckBox2 = IntVar() # 綁定變量 ctrl_CheckBox2 = Checkbutton(ctrl_Frame1, text='刪除空行', variable=int_CheckBox2, font=('宋體', '9')) ctrl_CheckBox2.place(x=14, y=36, height=22) # 考慮到對(duì)齊問(wèn)題,不列入寬度,需要時(shí)手動(dòng)加入 width=130 ctrl_CheckBox2.deselect() # 默認(rèn)為未選中狀態(tài) int_CheckBox3 = IntVar() # 綁定變量 ctrl_CheckBox3 = Checkbutton(ctrl_Frame1, text='刪除字符小于N的行', variable=int_CheckBox3, font=('宋體', '9')) ctrl_CheckBox3.place(x=14, y=58, height=22) # 考慮到對(duì)齊問(wèn)題,不列入寬度,需要時(shí)手動(dòng)加入 width=130 ctrl_CheckBox3.deselect() # 默認(rèn)為未選中狀態(tài) # N標(biāo)簽 Ctrl_Label = Label(ctrl_Frame1, text="N =") Ctrl_Label.place(x=180, y=58, width=55, height=22) # N str_KeyNum = StringVar() # 綁定變量 ctrl_KeyNum = Entry(ctrl_Frame1, textvariable=str_KeyNum, font=('宋體', '9')) ctrl_KeyNum.place(x=230, y=58, width=30, height=22) int_CheckBox4 = IntVar() # 綁定變量 ctrl_CheckBox4 = Checkbutton(ctrl_Frame1, text='刪除符合正則的行', variable=int_CheckBox4, font=('宋體', '9')) ctrl_CheckBox4.place(x=14, y=80, height=22) # 考慮到對(duì)齊問(wèn)題,不列入寬度,需要時(shí)手動(dòng)加入 width=130 ctrl_CheckBox4.deselect() # 默認(rèn)為未選中狀態(tài) # N標(biāo)簽 Ctrl_Label2 = Label(ctrl_Frame1, text="正則:") Ctrl_Label2.place(x=180, y=80, width=55, height=22) # N str_zz = StringVar() # 綁定變量 ctrl_zz = Entry(ctrl_Frame1, textvariable=str_zz, font=('宋體', '9')) ctrl_zz.place(x=230, y=80, width=150, height=22) ctrl_OpenFileBtn = Button(root, text='選擇文件', font=('宋體', '9'), command=getTxtFiles) # 可在括號(hào)內(nèi)加上調(diào)用函數(shù)部分 ,command=ctrl_OpenFileBtn_clicked ctrl_OpenFileBtn.place(x=305, y=18, width=72, height=29) root.mainloop()
到此這篇關(guān)于Python按條件批量刪除TXT文件行工具的文章就介紹到這了,更多相關(guān)Python批量刪除TXT內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ID3決策樹(shù)以及Python實(shí)現(xiàn)詳細(xì)過(guò)程
決策樹(shù)是我本人非常喜歡的機(jī)器學(xué)習(xí)模型,非常直觀容易理解,并且和數(shù)據(jù)結(jié)構(gòu)的結(jié)合很緊密,下面這篇文章主要給大家介紹了關(guān)于ID3決策樹(shù)以及Python實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2024-01-01python獲取外網(wǎng)IP并發(fā)郵件的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇python獲取外網(wǎng)IP并發(fā)郵件的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10Python 實(shí)現(xiàn)加密過(guò)的PDF文件轉(zhuǎn)WORD格式
這篇文章主要介紹了Python 實(shí)現(xiàn)加密過(guò)的PDF文件轉(zhuǎn)WORD格式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02Python實(shí)現(xiàn)隊(duì)列的方法示例小結(jié)【數(shù)組,鏈表】
這篇文章主要介紹了Python實(shí)現(xiàn)隊(duì)列的方法,結(jié)合實(shí)例形式分析了Python基于數(shù)組和鏈表實(shí)現(xiàn)隊(duì)列的相關(guān)操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-02-02Python?Pandas?修改表格數(shù)據(jù)類型?DataFrame?列的順序案例
這篇文章主要介紹了Python?Pandas?修改表格數(shù)據(jù)類型?DataFrame?列的順序案例,文章通過(guò)主題展開(kāi)詳細(xì)的相關(guān)內(nèi)容,感興趣的小伙伴可以參考一下2022-08-08PyTorch一小時(shí)掌握之圖像識(shí)別實(shí)戰(zhàn)篇
這篇文章主要介紹了PyTorch一小時(shí)掌握之圖像識(shí)別實(shí)戰(zhàn)篇,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09