首页 > 编程语言 >使用Python创建文件夹结构生成器

使用Python创建文件夹结构生成器

时间:2025-01-07 18:58:02浏览次数:3  
标签:Python self 生成器 文件夹 path folder line wx

在本文中,我们将探讨如何利用Python的wxPython库来创建一个图形用户界面(GUI)应用程序,该应用程序允许用户通过简单的文本输入来创建复杂的文件夹结构。这个程序将包括一个文本框用于输入文件夹结构描述,一个按钮来触发结构创建过程,以及一个目录选择器来指定目标文件夹。
C:\pythoncode\new\chromesnapshoot.py

全部代码

import wx
import os
import re

class FolderStructureCreator(wx.Frame):
    def __init__(self, parent, title):
        super().__init__(parent, title=title, size=(600, 400))

        # 创建面板
        panel = wx.Panel(self)

        # 创建控件
        self.memo = wx.TextCtrl(panel, style=wx.TE_MULTILINE, size=(500, 200), pos=(50, 50))
        self.create_button = wx.Button(panel, label="创建", pos=(50, 270))
        self.folder_picker = wx.DirPickerCtrl(panel, path="", size=(500, -1), pos=(50, 300))

        # 绑定事件
        self.create_button.Bind(wx.EVT_BUTTON, self.on_create)

        self.Show()

    def on_create(self, event):
        # 获取目标文件夹路径
        target_folder = self.folder_picker.GetPath()
        if not target_folder:
            wx.MessageBox("请选择目标文件夹", "错误", wx.ICON_ERROR)
            return
        
        # 获取输入的文件夹结构描述
        folder_structure = self.memo.GetValue()
        if not folder_structure:
            wx.MessageBox("请输入文件夹结构描述", "错误", wx.ICON_ERROR)
            return
        
        # 根据文件夹结构描述创建文件夹和文件
        self.create_structure(target_folder, folder_structure)

    def create_structure(self, base_path, structure):
        lines = structure.splitlines()
        path_stack = [base_path]  # 初始化路径栈

        for line in lines:
            # 使用正则表达式移除符号
            clean_line = re.sub(r'[├└│─]+', '', line).strip()

            # 跳过空行
            if not clean_line:
                continue

            indent_level = len(line) - len(line.lstrip(' '))  # 计算缩进级别
            while len(path_stack) > indent_level + 1:
                path_stack.pop()  # 回退到正确的父路径

            if clean_line.endswith('/'):
                # 创建文件夹
                folder_name = clean_line.rstrip('/')
                new_folder_path = os.path.join(path_stack[-1], folder_name)
                if not os.path.exists(new_folder_path):
                    os.makedirs(new_folder_path)
                path_stack.append(new_folder_path)
            elif '.' in clean_line:
                # 创建文件
                file_name = clean_line
                new_file_path = os.path.join(path_stack[-1], file_name)
                try:
                    with open(new_file_path, 'w') as f:
                        f.write('')  # 创建空文件
                except PermissionError as e:
                    wx.MessageBox(f"权限错误,无法创建文件:{new_file_path}\n{str(e)}", "错误", wx.ICON_ERROR)
                    return

        wx.MessageBox("文件夹和文件创建完成", "成功", wx.ICON_INFORMATION)


if __name__ == "__main__":
    app = wx.App(False)
    FolderStructureCreator(None, title="文件夹结构创建器")
    app.MainLoop()

步骤1:安装wxPython

首先,你需要在你的Python环境中安装wxPython库。你可以通过pip安装它:

pip install wxPython

步骤2:创建主窗口类

接下来,我们定义一个名为FolderStructureCreator的类,该类继承自wx.Frame。在这个类的构造函数中,我们设置窗口的大小和标题,并初始化各种控件(如文本框、按钮和目录选择器)。

import wx
import os
import re

class FolderStructureCreator(wx.Frame):
    def __init__(self, parent, title):
        super().__init__(parent, title=title, size=(600, 400))
        
        # 创建面板
        panel = wx.Panel(self)
        
        # 创建控件
        self.memo = wx.TextCtrl(panel, style=wx.TE_MULTILINE, size=(500, 200), pos=(50, 50))
        self.create_button = wx.Button(panel, label="创建", pos=(50, 270))
        self.folder_picker = wx.DirPickerCtrl(panel, path="", size=(500, -1), pos=(50, 300))
        
        # 绑定事件
        self.create_button.Bind(wx.EVT_BUTTON, self.on_create)
        
        self.Show()

步骤3:实现创建功能

on_create方法中,我们获取用户输入的目标文件夹路径和文件夹结构描述,然后调用create_structure方法来实际创建文件夹和文件。

    def on_create(self, event):
        target_folder = self.folder_picker.GetPath()
        if not target_folder:
            wx.MessageBox("请选择目标文件夹", "错误", wx.ICON_ERROR)
            return
        
        folder_structure = self.memo.GetValue()
        if not folder_structure:
            wx.MessageBox("请输入文件夹结构描述", "错误", wx.ICON_ERROR)
            return
        
        self.create_structure(target_folder, folder_structure)

步骤4:解析文件夹结构描述并创建文件夹/文件

create_structure方法负责解析用户输入的文件夹结构描述,并根据这些信息在指定的基路径下创建相应的文件夹和文件。

    def create_structure(self, base_path, structure):
        lines = structure.splitlines()
        path_stack = [base_path]
        
        for line in lines:
            clean_line = re.sub(r'[├└│─]+', '', line).strip()
            if not clean_line:
                continue
            
            indent_level = len(line) - len(line.lstrip(' '))
            while len(path_stack) > indent_level + 1:
                path_stack.pop()
            
            if clean_line.endswith('/'):
                folder_name = clean_line.rstrip('/')
                new_folder_path = os.path.join(path_stack[-1], folder_name)
                if not os.path.exists(new_folder_path):
                    os.makedirs(new_folder_path)
                path_stack.append(new_folder_path)
            elif '.' in clean_line:
                file_name = clean_line
                new_file_path = os.path.join(path_stack[-1], file_name)
                try:
                    with open(new_file_path, 'w') as f:
                        f.write('')
                except PermissionError:
                    wx.MessageBox("权限不足,无法创建文件", "错误", wx.ICON_ERROR)

运行结果

在这里插入图片描述

在这里插入图片描述

以上就是如何使用Python和wxPython创建一个文件夹结构生成器的完整指南。这个工具可以大大简化在文件系统中组织和管理文件的过程,特别是对于需要快速建立复杂文件夹结构的开发人员来说非常有用。

标签:Python,self,生成器,文件夹,path,folder,line,wx
From: https://blog.csdn.net/winniezhang/article/details/144991493

相关文章

  • 怎么用vs编python文件
    用vs编写python文件的方法:1、安装python插件,在vs的Extensions扩展中搜索Python,如下:2、安装完成后,就需要配置一下本地python解释器的路径,这个直接在settings.json文件中设置参数python.pythonPath就可以了。2.1、首先,点击左下角的管理按钮,在弹出的菜单列表中选择“设置”,......
  • Python如何读取 同花顺自选股?同花顺自选股保存在哪里?自定义板块的股票又保存在哪里?
    背景问题:客户策略想直接读取到同花顺的自选股,省得每次手动导出股票池,Python能够做到吗?回答:当然可以了!最主要的是找到同花顺自选股保存在本地的文件,找到了文件,就能通过Python来读取股票池。步骤那同花顺自选股保存在哪里呢?1、找到安装目录首先打开同花顺的安装目录,不知......
  • python 基本数据类型及基本运算
    变量和类型|整型(int)|:Python中可以处理任意大小的整数,而且支持二进制(如0b100,换算成十进制是4)、八进制(如0o100,换算成十进制是64)、十进制(100)和十六进制(0x100,换算成十进制是256)的表示法。浮点型(float):浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数......
  • python 爬取mp3音乐
    一、酷狗音乐1、代码importrequestsimporttime#导入解密模块importhashlibimportreimportosimportjson#导入制表模块importprettytableaspt#模拟浏览器headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(......
  • 使用Python执行Shell命令并获取结果
    使用Python执行Shell命令并获取结果是一项非常有用的技能,尤其在自动化任务、系统管理和数据处理方面。Python提供了多种方法来运行Shell命令并捕获输出,最常用的是 subprocess模块。以下是如何使用 subprocess模块执行Shell命令并获取结果的详细指南。1.导入 subprocess模块......
  • WxPython跨平台开发框架之使用PyInstaller 进行打包处理
    使用PyInstaller 打包Python项目是一个常见的需求,它可以将Python程序及其所有依赖项打包成一个独立的可执行文件或者安装文件,方便在没有安装Python环境的机器上运行。本随笔介绍WxPython跨平台开发框架中使用PyInstaller进行打包处理,包括在WIndow平台下生成独立的exe文件,松散结......
  • Python 中的迭代器与生成器、列表与元组的区别、作用域与命名空间的关系、异常处理机
    引言在Python的面试中,除了基础知识,还经常会涉及到一些稍微复杂的概念与问题。这篇文章将继续为大家分析一些高频Python面试题,帮助你更好地准备面试,提升自己的技术能力。......
  • 整理了6个Python经典项目(python爬虫、python人工智能、python数据分析、python web、p
    包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取】前言职场中一贯有“金三银四”、“金九银十”的说法。尤其是3、4月刚过完年后,很多企业的员工会选择离职,大量空缺职位被放出,同时HR招聘压力增大,求职者往往可以借此机会,获得一个更好的报价。如果你是一名正在求职......
  • Python实战--爬虫音乐数据的笔记
    开发工具Python版本:3.6相关模块:requests模块time模块parsel模块re模块time模块环境搭建安装Python并添加到环境变量,pip安装需要的相关模块即可。数据来源查询分析浏览器中打开我们要爬取的页面按F12进入开发者工具,查看我们想要的酷狗音乐飙升榜在哪里这里我们需......
  • (免费送源码)计算机毕业设计原创定制:python+Django+MySQL Django实验室管理系统
    摘 要本论文主要论述了如何使用python语言、Django框架开发一个实验室管理系统,本系统将严格按照软件开发流程,进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述该系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析......