没啥好说的,选择文件夹,点生成。会输出一份目录架构完全一致,不过文件都是0kb。

新目录会以output结尾。

对比

机制

遍历所有文件,把所有的路径都替换一下,

比如目标文件夹:G:\study

遍历到的文件:G:\study\1.text,会把G:\study 替换成 G:\study_output。 不过没谁会奇葩到命名跟根目录一样吧,比如G:\study\G:\study (那真这样命名应该会失效。我也没辙)

源码

import PySimpleGUI as sg
import os
import pathlib

sg.ChangeLookAndFeel('BlueMono')

# UI
layout = [
    [sg.Input(size=(51, 2)), sg.FolderBrowse(button_text='请选择文件夹',key='FolderBrowse',size=(12, 1))],
    [sg.ProgressBar(1, orientation='h', size=(45, 20), key='progress'),sg.Submit(button_text='生成',key='Submit',size=(12, 1))],    ]

window = sg.Window(title = '月离离 Files Tree 1.0',layout=layout, icon = r'G:\back\pyfile\月离离工具箱\icons\folder.ico')

while True:
    event, values = window.read()
    submit = window.find_element('Submit')
    progress_bar = window.find_element('progress')

    if event == 'Submit':
        foldername = values['FolderBrowse'] or '.'
        
        # 生成过程中,禁用按钮
        window['Submit'].update(disabled=True)

        # 遍历
        for folderName,subfolders,filenames in os.walk(foldername):
            out_folder = foldername+'_output'
            
            #打印第一层目录下所有文件和文件夹
            i = 0
            for subfolder in subfolders:
                lens = len(filenames)
                if lens != 0:
                    # 进度条。。弄着玩的,因为基本上都是秒生成
                    progress_bar.UpdateBar(i/lens*5, 5)
                fold = (folderName + '/'+ subfolder ).replace(foldername,out_folder).replace('\\','/')
                os.makedirs(fold)
                i+=1

            # 生成文件
            for filename in filenames:
                path = (folderName).replace(foldername,out_folder).replace('\\','/')+ '/' + filename
                pathlib.Path(path).touch()
                
        # 结束以后 恢复按钮
        submit.update(disabled=False)

window.close()

 

您的电子邮箱地址不会被公开。 必填项已用*标注

请下载到本地观看!因为pdf是用的阿里云盘预览,可能部分字体加载不了。

请安装油猴脚本,并下载月离的万事屋脚本。详情请查看菜单 导航 - 用户指引

请在右上角三个点 - 下载管理 - 找到刚才的文件,选择允许下载。 或者换个浏览器