
import PySimpleGUI as sg
from pathlib import Path
def get_matching(folder, from_key):
if folder == "":
return
candidates = [i.name for i in Path(folder).iterdir() if from_key in i.name]
return candidates
def substitude(folder, from_key, to_key):
assert folder != "" and from_key != "" and to_key != ""
# print(folder, from_key, to_key)
ret_str = "替换成功!"
for i in Path(folder).iterdir():
if from_key in i.name:
from_name = i.name
to_name = i.name.replace(from_key, to_key)
# make sure the extension name is the same
to_name = to_name.split('.')[0] + '.' + '.'.join(from_name.split('.')[1:])
i.rename(i.parent / to_name)
ret_str += "\n%s------>%s" % (from_name, to_name)
# i.rename
return ret_str
if __name__ == "__main__":
# All the stuff inside your window.
layout = [[sg.FolderBrowse('打开文件夹'), sg.In(size=(45,1), enable_events=True, key='folder')],
[sg.Button(' 查找内容 : '), sg.InputText(key='from')],
[sg.Button(' 全部替换 : '), sg.InputText(key='to')],
# [],
[sg.Listbox(values=[], size=(55, 20), key='matching')]]
# Create the Window
window = sg.Window('查找和替换小程序', layout, font='微软雅黑')
# Event Loop to process "events" and get the "values" of the inputs
while True:
event, values = window.read()
if event == sg.WIN_CLOSED: # if user closes window or clicks cancel
break
if event == 'folder':
window['matching'].update(get_matching(values['folder'], values['from']))
if event == ' 查找内容 : ':
if values['from'] == "":
sg.popup("查找的内容不能为空")
window['matching'].update(get_matching(values['folder'], values['from']))
if event == " 全部替换 : ":
if values['to'] == "":
sg.popup("替换的内容不能为空")
continue
if values['from'] == "":
sg.popup("查找的内容不能为空")
continue
if values['folder'] == "":
sg.popup("文件夹尚未选择")
continue
ret = substitude(values['folder'], values['from'], values['to'])
sg.popup_scrolled('替换完成', ret, size=(50,30))
window['matching'].update(get_matching(values['folder'], values['from']))
# print(get_matching(values['folder'], key))
window.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步