更名 第一版 成功(备份)

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.Text(''), sg.In(size=(42,), 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('Window Title', 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(ret)
            window['matching'].update(get_matching(values['folder'], values['from']))

        # print(get_matching(values['folder'], key))

    window.close()

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