科学的文件架构 + 一键生成文件夹层级工具 = 极具妥帖的秩序感受


又是一周,好久不见,正琢磨着这次给大家带来点什么好东西,突然百度网盘的整理让我头疼不已,从我记事以来,这网盘已经整理过N遍了,总是乱了整理,整理了又乱。或者说辛辛苦苦整理一次,结果没用几个月发现放置的资料并没有按照预期进行,文件继续混乱着,哎~

我想了想,一定有什么方法打破这个魔咒,于是就有了这篇文章(下边这个是一个简短的文件架构,文章后边告诉你怎么转化为对应文件夹,最后拖到百度网盘就可以了)。

├── 临床医学 (Clinical Medicine)
│   ├── 内科学 (Internal Medicine)
│   │   ├── 心血管内科学 (Cardiology)
│   │   ├── 内分泌学 (Endocrinology)
│   │   ├── 消化内科学 (Gastroenterology)
│   │   └── 肾内科学 (Nephrology)
│   ├── 外科学 (Surgery)
│   │   ├── 心脏外科学 (Cardiac Surgery)
│   │   ├── 神经外科学 (Neurosurgery)
│   │   ├── 骨科学 (Orthopedics)
│   │   └── 泌尿外科学 (Urology)
│   ├── 妇产科学 (Obstetrics and Gynecology)
│   │   ├── 妇科学 (Gynecology)
│   │   └── 产科学 (Obstetrics)
  1. 首先我会给大家带来一些比较规范科学的文件管理架构,因为百度网盘里的东西基本上都是“囤货”,所以说只要科学,那这个架构用一些时日应该不成问题;
  2. 接着给大家介绍一下怎么讲这些架构转化为实际的文件夹结构;
  3. 最后仍然是分享一下本次自动化办公的源文件,若有代码爱好者,也可以在这个基础上继续优化。

一、规范科学的文件架构

首先看一下我们公司的文件管理体系,有点复杂,但很好用。

1. 一种学生较为通用的文件管理体系
├── 学生文件管理
│   ├── 娱乐和爱好
│   │   ├── 音乐和视频
│   │   │   ├── 音乐
│   │   │   ├── MV
│   │   │   └── 电影
│   │   ├── 图片和相册
│   │   │   ├── 照片
│   │   │   └── 自拍
│   │   └── 书籍和电子书
│   │       ├── 纸质书籍
│   │       └── 电子书籍
│   ├── 学习和教育
│   │   ├── 课程资料
│   │   │   ├── 课件
│   │   │   ├── 笔记
│   │   │   └── 实验报告
│   │   └── 成绩单和证书
│   │       ├── 成绩单
│   │       └── 荣誉证书
│   ├── 日常生活
│   │   ├── 健康与运动
│   │   │   ├── 健身记录
│   │   │   └── 运动比赛
│   │   ├── 旅行和活动
│   │   │   ├── 旅行照片
│   │   │   └── 活动回忆
│   │   └── 社交和人际关系
│   │       ├── 社交活动
│   │       └── 朋友圈
│   └── 个人发展
│       ├── 研究和项目
│       │   ├── 研究论文
│       │   └── 项目报告
│       └── 职业发展
│           ├── 实习证明
│           └── 职业建议
2. 一种老师较为通用的文件管理体系
├── 教师文件管理
│   ├── 课程规划和教学资料
│   │   ├── 课程大纲
│   │   ├── 授课计划
│   │   ├── 教案
│   │   └── 教学资源
│   ├── 学生管理
│   │   ├── 学生名单
│   │   ├── 成绩记录
│   │   └── 学生作业
│   ├── 考试和评估
│   │   ├── 考试安排
│   │   ├── 考试试卷
│   │   └── 考试成绩
│   ├── 教育技术和工具
│   │   ├── 在线课程平台
│   │   ├── 教学应用程序
│   │   └── 多媒体资源
│   ├── 行政和管理
│   │   ├── 学校文件
│   │   ├── 会议记录
│   │   └── 表格和表格
│   └── 专业发展
│       ├── 研究论文
│       ├── 会议演讲
│       └── 培训证书
3. 一种职场人较为通用的文件管理体系
├── 职场文件管理
│   ├── 项目管理
│   │   ├── 项目计划
│   │   ├── 进度报告
│   │   ├── 会议记录
│   │   └── 合同和协议
│   ├── 客户和合作伙伴
│   │   ├── 客户资料
│   │   ├── 合作伙伴协议
│   │   └── 业务提案
│   ├── 资料和文档
│   │   ├── 行业报告
│   │   ├── 研究文件
│   │   └── 文档模板
│   ├── 日常工作
│   │   ├── 电子邮件
│   │   ├── 日程安排
│   │   └── 任务清单
│   ├── 专业发展
│   │   ├── 培训和学习
│   │   ├── 会议和研讨会
│   │   └── 履历和推荐信
│   ├── 财务管理
│   │   ├── 报销单据
│   │   └── 薪资和税务
│   └── 个人信息
│       ├── 管理登录信息
│       └── 个人笔记

4. 一种医学较为通用的文件管理体系
├── 医学文件管理
│   ├── 患者管理
│   │   ├── 患者病历
│   │   ├── 检查报告
│   │   ├── 治疗计划
│   │   └── 处方和药物信息
│   ├── 临床研究
│   │   ├── 研究课题
│   │   ├── 数据收集
│   │   ├── 研究报告
│   │   └── IRB文件(伦理委员会文件)
│   ├── 医学教育
│   │   ├── 教学课件
│   │   ├── 学术讲座
│   │   └── 教育视频
│   ├── 学术发表
│   │   ├── 学术论文
│   │   ├── 会议演讲
│   │   └── 期刊投稿
│   ├── 医疗政策与管理
│   │   ├── 医院政策文件
│   │   ├── 管理会议记录
│   │   └── 医疗设备和供应管理
│   ├── 质量控制和认证
│   │   ├── 质量评估报告
│   │   └── 认证文件
│   └── 个人发展
│       ├── 培训证书
│       ├── 学术奖项
│       └── 职业发展计划
5. 最后放一个我们第五设计的文件管理体系
├── 行政管理 (Administration)
│   ├── 行政通知 (Admin Notices)
│   │   ├── 公司公告 (Company Announcements)
│   │   ├── 内部通讯 (Internal Communications)
│   │   └── 活动通知 (Event Notices)
│   ├── 政策和程序 (Policies & Procedures)
│   │   ├── 公司政策 (Company Policies)
│   │   ├── 操作流程 (Operational Procedures)
│   │   └── 安全指南 (Safety Guidelines)
│   └── 办公管理 (Office Management)
│       ├── 设施管理 (Facility Management)
│       ├── 资产管理 (Asset Management)
│       └── 供应商合同 (Vendor Contracts)
├── 财务与会计 (Finance & Accounting)
│   ├── 财务报表 (Financial Statements)
│   │   ├── 资产负债表 (Balance Sheets)
│   │   ├── 利润表 (Income Statements)
│   │   └── 现金流量表 (Cash Flow Statements)
│   ├── 预算与规划 (Budget & Planning)
│   │   ├── 年度预算 (Annual Budgets)
│   │   ├── 财务预测 (Financial Forecasts)
│   │   └── 支出计划 (Expenditure Plans)
│   └── 税务文件 (Tax Documents)
│       ├── 税务申报 (Tax Filings)
│       ├── 税务合规 (Tax Compliance)
│       └── 税务咨询 (Tax Advisory)
├── 人力资源 (Human Resources)
│   ├── 招聘与入职 (Recruitment & Onboarding)
│   │   ├── 招聘计划 (Recruitment Plans)
│   │   ├── 候选人简历 (Candidate Resumes)
│   │   └── 入职文件 (Onboarding Documents)
│   ├── 员工记录 (Employee Records)
│   │   ├── 员工档案 (Employee Files)
│   │   ├── 绩效评估 (Performance Evaluations)
│   │   └── 薪酬福利 (Compensation & Benefits)
│   └── 培训与发展 (Training & Development)
│       ├── 培训计划 (Training Programs)
│       ├── 培训材料 (Training Materials)
│       └── 发展规划 (Career Development Plans)
├── 市场与销售 (Marketing & Sales)
│   ├── 市场调研 (Market Research)
│   │   ├── 市场分析 (Market Analysis)
│   │   ├── 客户调查 (Customer Surveys)
│   │   └── 数据分析 (Data Analysis)
│   ├── 销售报告 (Sales Reports)
│   │   ├── 销售业绩 (Sales Performance)
│   │   ├── 销售预测 (Sales Forecasts)
│   │   └── 销售目标 (Sales Targets)
│   ├── 客户档案 (Client Profiles)
│   │   ├── 客户基本信息 (Client Information)
│   │   │   ├── 联系信息 (Contact Information)
│   │   │   ├── 公司信息 (Company Information)
│   │   │   └── 业务背景 (Business Background)
│   │   ├── 客户需求 (Client Needs)
│   │   │   ├── 项目需求 (Project Needs)
│   │   │   ├── 定制要求 (Customization Requests)
│   │   │   └── 反馈意见 (Feedback)
│   │   ├── 项目记录 (Project Records)
│   │   │   ├── 项目计划 (Project Plans)
│   │   │   ├── 项目进展 (Project Progress)
│   │   │   └── 项目总结 (Project Close-out)
│   │   └── 客户合同 (Client Contracts)
│   │       ├── 合同副本 (Contract Copies)
│   │       ├── 合同条款 (Contract Terms)
│   │       └── 合同修订 (Contract Amendments)
│   ├── 营销活动 (Marketing Campaigns)
│   │   ├── 活动计划 (Campaign Planning)
│   │   ├── 活动执行 (Campaign Execution)
│   │   └── 活动评估 (Campaign Evaluation)
│   ├── 销售策略 (Sales Strategies)
│   │   ├── 策略文档 (Strategy Documents)
│   │   └── 销售培训 (Sales Training)
│   ├── 客户沟通记录 (Customer Communication Logs)
│   │   ├── 沟通记录 (Communication Records)
│   │   └── 客户反馈 (Customer Feedback)
│   └── 合同与协议 (Contracts & Agreements)
│       ├── 标准合同 (Standard Contracts)
│       ├── 自定义合同 (Customized Contracts)
│       └── 合同修订 (Contract Amendments)
├── 技术与研发 (Tech & R&D)
│   ├── 项目文档 (Project Documentation)
│   │   ├── 项目计划 (Project Plans)
│   │   ├── 项目进展报告 (Progress Reports)
│   │   └── 项目总结 (Project Close-out)
│   ├── 代码库 (Code Repositories)
│   │   ├── 源代码 (Source Code)
│   │   ├── 版本控制 (Version Control)
│   │   └── 代码文档 (Code Documentation)
│   └── 测试报告 (Test Reports)
│       ├── 测试计划 (Test Plans)
│       ├── 测试用例 (Test Cases)
│       └── 测试结果 (Test Results)
└── 客户支持与服务 (Customer Support & Services)
    ├── 客户支持 (Customer Support)
    │   ├── 支持请求 (Support Requests)
    │   │   ├── 客户请求记录 (Customer Requests)
    │   │   │   ├── 在线请求 (Online Requests)
    │   │   │   ├── 电话请求 (Phone Requests)
    │   │   │   └── 邮件请求 (Email Requests)
    │   │   ├── 支持工单 (Support Tickets)
    │   │   │   ├── 工单分配 (Ticket Assignment)
    │   │   │   ├── 工单跟踪 (Ticket Tracking)
    │   │   │   └── 工单关闭 (Ticket Closure)
    │   │   └── 请求状态 (Request Status)
    │   │       ├── 处理中 (In Progress)
    │   │       ├── 待处理 (Pending)
    │   │       └── 已完成 (Completed)
    │   ├── 解决方案库 (Solution Repository)
    │   │   ├── 常见问题解决方案 (FAQ Solutions)
    │   │   │   ├── 技术问题 (Technical Issues)
    │   │   │   ├── 使用问题 (Usage Issues)
    │   │   │   └── 账户问题 (Account Issues)
    │   │   ├── 故障排除指南 (Troubleshooting Guides)
    │   │   │   ├── 硬件问题 (Hardware Issues)
    │   │   │   ├── 软件问题 (Software Issues)
    │   │   │   └── 网络问题 (Network Issues)
    │   │   └── 技术文档 (Technical Documentation)
    │   │       ├── 系统架构 (System Architecture)
    │   │       ├── 产品规格 (Product Specifications)
    │   │       └── 维护手册 (Maintenance Manuals)
    │   └── 沟通记录 (Communication Logs)
    │       ├── 电话记录 (Call Logs)
    │       ├── 电子邮件记录 (Email Records)
    │       └── 聊天记录 (Chat Transcripts)
    ├── 服务协议 (Service Agreements)
    │   ├── 服务合同 (Service Contracts)
    │   │   ├── 标准服务合同 (Standard Service Contracts)
    │   │   ├── 定制服务合同 (Customized Service Contracts)
    │   │   └── 合同修订 (Service Contract Amendments)
    │   ├── 服务条款 (Terms of Service)
    │   │   ├── 一般条款 (General Terms)
    │   │   └── 特殊条款 (Special Terms)
    │   └── 保修和支持 (Warranty and

那么问题来了,你知道我分享给你们的那么多程序,都放在哪里吗?嘿嘿

当然上述的文件结构只是一些举例,您要是有需要可以自行复制修改,保存成txt文件,最后用文件夹转化工具建立文件夹就可以了(实在没时间也可以公众号联系我们,给你定制也可以)

二、根据文件架构一键生成文件夹

(文章最后放置有exe程序链接,可以直接获取。)
(1)双击exe程序
在这里插入图片描述
(2)可以看到我写的界面,需要先选择文件和选择建立文件夹的位置(界面有点丑,没太多时间哈哈哈,原谅原谅)
在这里插入图片描述(3)选择什么文件?就这个,你可以从上边把内容复制到txt文档,修改后用这个程序一跑,文件夹就全部建好了(有问题还是公众号留言哈,免费技术支持)
在这里插入图片描述
在这里插入图片描述
(4)点击开始创建,文件夹就创建好了,测试过的,鲁棒性很强。
在这里插入图片描述

三、关于自动解析文件架构的代码

本次的代码因为涉及到一定的算法,所以有些走心,资料有些多,如果不需要这块儿内容可以直接翻到最后领资料就行,下边是程序说明。

1. 实现功能:
  1. 运行程序后打开操作窗口;
  2. 点击按钮选择指定的txt文档,文档的结构如图所示(类似结构都可以):
├── 行政管理 (Administration)
│   ├── 行政通知 (Admin Notices)
│   │   ├── 公司公告 (Company Announcements)
│   │   ├── 内部通讯 (Internal Communications)
│   │   └── 活动通知 (Event Notices)
│   ├── 政策和程序 (Policies & Procedures)
│   │   ├── 公司政策 (Company Policies)
│   │   ├── 操作流程 (Operational Procedures)
│   │   └── 安全指南 (Safety Guidelines)
│   └── 办公管理 (Office Management)
│       ├── 设施管理 (Facility Management)
│       ├── 资产管理 (Asset Management)
│       └── 供应商合同 (Vendor Contracts)
├── 财务与会计 (Finance & Accounting)
│   ├── 财务报表 (Financial Statements)
│   │   ├── 资产负债表 (Balance Sheets)
│   │   ├── 利润表 (Income Statements)
│   │   └── 现金流量表 (Cash Flow Statements)
│   ├── 预算与规划 (Budget & Planning)
│   │   ├── 年度预算 (Annual Budgets)
│   │   ├── 财务预测 (Financial Forecasts)
│   │   └── 支出计划 (Expenditure Plans)
│   └── 税务文件 (Tax Documents)
│       ├── 税务申报 (Tax Filings)
│       ├── 税务合规 (Tax Compliance)
│       └── 税务咨询 (Tax Advisory)
  1. 选择指定的文件夹路径;
  2. 点击开始创建,可以在指定的文件夹下按照txt文档中的结构创建指定的文件夹;
  3. 健壮性要求:
    (1)类似的txt文档都支持,比如用其他字符展示层级;
    (2)支持无限层级,只要txt文档别太大就行;
2. 程序构想:
  1. 逐行读取文件,返回一个列表linesList;
  2. 根据linesList获取文件夹的最大层级数,返回一个列表tiersList,记得排序,列表如下:
tiersList = [4, 8, 6, 12] # 用每行字符串的无效字符数代表层级,数字越大,层级越低
  1. 根据tiersList创建一个列表foldersList_root,这个列表里字典的key是tiersList的值,value都是选择的文件夹路径;
foldersList_root = []
  1. 重点来了
    (1)创建一个列表folderList, 存放所有的路径;
    (2)创建一个foldersList_catch,用于缓存根文件夹(像行政管理这种文件夹称为根文件夹);
    (3)foldersList_catch重置等于[], 逐行读取linesList, 完成一个根文件夹后(foldersList_catch完成),把foldersList_catch放入folderList;
    a. 逐行读取,需要先获取这行的无效字符数为InvalidNum;
    b. 核心运算,获取每行的文件夹路径;
# 逐行读取字符串中,每行都需要进行以下操作……
for i in len(tiersList):
    if InvalidNum == tiersList[i]if foldersList_catch == []:
            if i == 0:
                # 将本行信息作为一个字典存入foldersList_catch,建立了一个根文件夹
        else:
            if i == 0:  # 说明要新建一个根文件夹了
                # 将foldersList_catch存到folderList
                # 将foldersList_catch重置
            else:
                # 根据tiersList推算出上一个InvalidNum,然后在foldersList_catch找到在上一级文件夹目录;
                # 组建本级目录字符串,存放到foldersList_catch中;

(4)把foldersList_catch重置等于foldersList_root,继续下一个根文件夹的读取。
4. 遍历folderList,利用其中的文件夹目录开始建立文件夹。

3. UML图(草图草图,没那么严谨)

在这里插入图片描述

4. 源码文件
import os
import re
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QTextEdit, QFileDialog, QMessageBox
from PyQt5.QtGui import QFont, QIcon

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.linesList = []     # 存储txt行信息
        self.folderList = []    # 存储所有文件夹路径信息
        self.tiersList = []     # 存储文件夹的层级

        self.setWindowTitle("TXT 文件选择与预览")
        self.setGeometry(100, 100, 900, 600)
        self.setWindowIcon(QIcon('icon.png'))  # 设置窗口图标

        # 设置主布局
        layout = QVBoxLayout()

        # 文件选择按钮
        self.btn_select_txt = QPushButton("选择 TXT 文件")
        self.btn_select_txt.setFont(QFont("Arial", 12))
        self.btn_select_txt.setStyleSheet('''
            QPushButton {
                background-color: #f0f0f0;
                border: 2px solid #cccccc;
                border-radius: 5px;
                padding: 10px;
                color: #333333;
            }
            QPushButton:hover {
                background-color: #e0e0e0;
                border-color: #999999;
            }
        ''')
        self.btn_select_txt.clicked.connect(self.select_txt_file)
        layout.addWidget(self.btn_select_txt)

        # 文件内容预览区域
        self.txt_preview = QTextEdit()
        self.txt_preview.setReadOnly(True)
        self.txt_preview.setStyleSheet('''
            QTextEdit {
                background-color: #ffffff;
                border: 1px solid #cccccc;
                padding: 10px;
            }
        ''')
        layout.addWidget(self.txt_preview)

        # 文件夹选择按钮
        self.btn_select_folder = QPushButton("选择文件夹")
        self.btn_select_folder.setFont(QFont("Arial", 12))
        self.btn_select_folder.setStyleSheet('''
            QPushButton {
                background-color: #f0f0f0;
                border: 2px solid #cccccc;
                border-radius: 5px;
                padding: 10px;
                color: #333333;
            }
            QPushButton:hover {
                background-color: #e0e0e0;
                border-color: #999999;
            }
        ''')
        self.btn_select_folder.clicked.connect(self.select_folder)
        layout.addWidget(self.btn_select_folder)

        # 开始创建按钮
        self.btn_start = QPushButton("开始创建")
        self.btn_start.setFont(QFont("Arial", 12))
        self.btn_start.setStyleSheet('''
            QPushButton {
                background-color: #333333;
                border: none;
                border-radius: 5px;
                color: white;
                padding: 15px;
                text-align: center;
                font-weight: bold;
            }
            QPushButton:hover {
                background-color: #555555;
            }
        ''')
        self.btn_start.clicked.connect(self.start_creation)
        layout.addWidget(self.btn_start)

        # 设置中心窗口
        container = QWidget()
        container.setLayout(layout)
        self.setCentralWidget(container)

        # 初始化路径变量
        self.txt_file_path = None
        self.folder_path = None

    def select_txt_file(self):
        # 选择 TXT 文件
        file_path, _ = QFileDialog.getOpenFileName(self, "选择 TXT 文件", "", "Text Files (*.txt)")
        if file_path:
            self.txt_file_path = file_path
            self.preview_file(file_path)
        else:
            QMessageBox.information(self, "文件选择", "未选择文件")

    def preview_file(self, file_path):
        # 预览 TXT 文件内容
        try:
            with open(file_path, 'r', encoding='utf-8') as file:
                content = file.read()
                self.txt_preview.setPlainText(content)
        except Exception as e:
            QMessageBox.critical(self, "错误", f"无法读取文件: {e}")

    def select_folder(self):
        # 选择文件夹
        folder_path = QFileDialog.getExistingDirectory(self, "选择文件夹")
        if folder_path:
            self.folder_path = folder_path
            print(f"选择的文件夹: {folder_path}")
        else:
            QMessageBox.information(self, "文件夹选择", "未选择文件夹")

        # 读取txt文档,返回self.linesList

    def readTxt(self, path):
        with open(path, 'r', encoding='utf-8') as file:
            lines = file.readlines()
            for line in lines:
                self.linesList.append(line.strip('\n'))

        # 返回字符串中汉字的位置chineseIndex

    def getChineseIndex(self, str):
        match = re.search(r'[\u4e00-\u9fff]', str)
        if match:
            return match.start()
        print("第五提示:尚未找到汉字,程序出错,即将退出")
        sys.exit()

        # 获取文件夹的最大层级数,返回列表tiersList

    def getTiersList(self, linesList):
        for i in linesList:
            tier = self.getChineseIndex(i)
            if tier not in self.tiersList:
                self.tiersList.append(tier)
        self.tiersList = sorted(self.tiersList)  # 记得排个序

        # 获取上一级文件夹路径,返回字符串upperPathStr

    def getUpperPath(self, tiersList, InvalidNum, foldersList_catch):
        index = tiersList.index(InvalidNum)
        for i in reversed(foldersList_catch):
            # print(list(i.keys())[0])
            if list(i.keys())[0] == self.tiersList[index - 1]:
                return i[self.tiersList[index - 1]]  # 返回上一级文件夹路径

        # 获取文件夹的所有路径,返回列表folderList

    def getFolderList(self, linesList, forderPath):
        self.getTiersList(linesList)
        # print(self.tiersList)
        foldersList_catch = []
        for i in self.linesList:  # 核心开始
            InvalidNum = self.getChineseIndex(i)  # 获取这串字符串前的无效字符数
            forderName = i[InvalidNum:]  # 获取文件夹的名字
            for j in range(len(self.tiersList)):
                if InvalidNum == self.tiersList[j]:
                    if foldersList_catch == []:
                        if j == 0:
                            # 将本行信息作为一个字典存入foldersList_catch
                            foldersList_catch.append({InvalidNum: str(forderPath) + r"\\" + forderName})
                    else:
                        if j == 0:  # 说明要新建一个根文件夹了
                            # 将foldersList_catch存到folderList
                            self.folderList.extend(foldersList_catch)
                            # 将foldersList_catch重置
                            foldersList_catch = []
                            foldersList_catch.append({InvalidNum: str(forderPath) + r"\\" + forderName})
                        else:
                            # 根据tiersList推算出上一个InvalidNum,然后在foldersList_catch找到在上一级文件夹目录;
                            upperPathStr = self.getUpperPath(self.tiersList, InvalidNum, foldersList_catch)
                            # print(upperPathStr)
                            # 组建本级目录字符串,存放到foldersList_catch中;
                            foldersList_catch.append({InvalidNum: str(upperPathStr) + r"\\" + forderName})
        self.folderList.extend(foldersList_catch)

        # 创建文件夹,成功返回0,失败返回1

    def createFolder(self, filePath, forderPath):
        self.readTxt(filePath)
        # print(self.linesList)
        self.getFolderList(self.linesList, forderPath)
        # 开始创建文件夹
        for i in self.folderList:
            folderPath = list(i.values())[0]
            os.makedirs(folderPath, exist_ok=True)
            print(f"目录 '{folderPath}' 创建成功(或已存在)")

    def start_creation(self):
        # 开始创建时的检查
        if not self.txt_file_path:
            QMessageBox.warning(self, "警告", "请先选择一个 TXT 文件")
            return
        if not self.folder_path:
            QMessageBox.warning(self, "警告", "请先选择一个文件夹")
            return

        self.createFolder(self.txt_file_path, self.folder_path)
        try:
            # 模拟创建操作
            # 创建成功后提示
            QMessageBox.information(self, "创建成功", "文件和文件夹创建成功!")
        except Exception as e:
            QMessageBox.critical(self, "错误", f"创建过程中出现错误: {e}")

def main():
    app = QApplication(sys.argv)
    app.setStyle('Fusion')  # 设置应用风格为 Fusion
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

四、关于资料的获取

首先看一下都有哪些,我大致介绍一下:
在这里插入图片描述
为了方便资源管理,我仍然是放在公众号里,有需要可以回复“百度网盘整理神器”自取。
在这里插入图片描述

最后贴一个我们的公众号二维码:

请添加图片描述
最后祝我们,都有可以自由支配的时间。
请添加图片描述

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部