第三版0605

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()






posted @   L707  阅读(83)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
主题色彩