百度网盘的文件该怎么整理?不如试试这个整理工具

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


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

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

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

    目录

      • 科学的文件架构 + 一键生成文件夹层级工具 = 极具妥帖的秩序感受
        • 一、规范科学的文件架构
          • 1. 一种学生较为通用的文件管理体系
          • 2. 一种老师较为通用的文件管理体系
          • 3. 一种职场人较为通用的文件管理体系
          • 4. 一种医学较为通用的文件管理体系
          • 5. 最后放一个我们第五设计的文件管理体系
        • 二、根据文件架构一键生成文件夹
        • 三、关于自动解析文件架构的代码
          • 1. 实现功能:
          • 2. 程序构想:
          • 3. UML图(草图草图,没那么严谨)
          • 4. 源码文件
        • 四、关于资料的获取

一、规范科学的文件架构

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

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

四、关于资料的获取

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/736010.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【权威出版/投稿优惠】2024年水利水电与能源环境科学国际会议(WRHEES 2024)

2024 International Conference on Water Resources, Hydropower, Energy and Environmental Science 2024年水利水电与能源环境科学国际会议 【会议信息】 会议简称:WRHEES 2024 大会时间:点击查看 截稿时间:点击查看 大会地点:…

day2-web安全漏洞攻防-基础-弱口令、HTML注入(米斯特web渗透测试)

day2-web安全漏洞攻防-基础-弱口令、HTML注入(米斯特web渗透测试) 1,漏洞2,弱口令3,爆破(1)Burpsuite(2)攻击类型 4,HTML针剂注入 1,漏洞 挖掘和利…

DataStructure.时间和空间复杂度

时间和空间复杂度 【本节目标】1. 如何衡量一个算法的好坏2. 算法效率3. 时间复杂度3.1 时间复杂度的概念3.2 大O的渐进表示法3.3 推导大O阶方法3.4 常见时间复杂度计算举例3.4.1 示例13.4.2 示例23.4.3 示例33.4.4 示例43.4.5 示例53.4.6 示例63.4.7 示例7 4.空间复杂度4.1 示…

【Java】pcm 与 wav 格式互转工具类 (附测试用例)

文章目录 1. 前言1.1 背景1.2 目标1.3 亮点 2. 用例说明3. 补充验证4. 相关链接 1. 前言 git 仓库 https://github.com/ChenghanY/pcm-wav-converter 1.1 背景 系统新接入语音引擎。 语音引擎只认 pcm 格式数据。前端只认 wav 格式 。 需要后端对 pcm 和 wav 格式实现互转&a…

SpringCloud Alibaba Sentinel中@SentinelResource使用实践总结

Sentinel 提供了 SentinelResource 注解用于定义资源,并提供了 AspectJ 的扩展用于自动定义资源、处理 BlockException 等。 注意:注解方式埋点不支持 private 方法。 【1】资源名称限流 ① controller方法 GetMapping("/byResource") Senti…

汽车网络安全 -- 漏洞该如何管理

目录 1.漏洞获取途径汇总 2.CAVD的漏洞管理规则简析 2.1 通用术语简介 2.2 漏洞评分指标 2.3.1 场景参数 2.3.2 威胁参数 2.3.3 影响参数 2.3 漏洞等级判定 ​3.小结 在汽车网络安全的时代背景下,作为一直从事车控类ECU基础软件开发的软件dog,…

openjudge_2.5基本算法之搜索_917:Knight Moves

题目 917:Knight Moves 总时间限制: 1000ms 内存限制: 65536kB 描述 Background Mr Somurolov, fabulous chess-gamer indeed, asserts that no one else but him can move knights from one position to another so fast. Can you beat him? The Problem Your task is to wr…

利用MSSQL模拟提权

点击星标,即时接收最新推文 本文选自《内网安全攻防:红队之路》 扫描二维码五折购书 利用MSSQL模拟提权 在MS SQL数据库,可以使用EXECUTE AS语句,以其他用户的上下文执行SQL查询。需要注意的是只有明确授予模拟(Impers…

线程间通信方式(互斥(互斥锁)与同步(无名信号量、条件变量))

1通信机制:互斥与同步 线程的互斥通过线程的互斥锁完成; 线程的同步通过无名信号量或者条件变量完成。 2 互斥 2.1 何为互斥? 互斥是在多个线程在访问同一个全局变量的时候,先让这个线程争抢锁的资源,那个线程争抢…

学会python——对目录的操作(python实例十)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、遍历当前目录 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、删除目录中的文件 4.1 代码构思 4.2 代码示例 4.3 运行结果 5、总计 1、认识Python Python 是一个高层次的结合了解释性…

Linux-安装及管理程序

目录 一、Linux应用程序基础 1、应用程序与系统命令的关系 2、 典型应用程序的目录结构 3、常见的软件包封装类型 二、RPM包管理工具 1、RPM包管理器 2、RPM软件包 ​3、RPM的命令格式 4、RPM命令的常用选项 5、RPM安装 三、 yum安装 1、yum源介绍 1.1、本地yum源 …

ClosedXML

一、类库介绍 ClosedXML是一个用于读取、操作和写入Excel 2007 (.xlsx, .xlsm)文件的.NET第三方库。它基于OpenXML,但与OpenXML相比,ClosedXML具有更高的性能和更易于使用的API接口。 ClosedXML支持XML文档的解析和生成,可以处理复杂的XML结…

程序员如何高效读代码?

程序员高效读代码的技巧包括以下几点: 明确阅读目的:在开始阅读代码之前,先明确你的阅读目的。是为了理解整个系统的架构?还是为了修复一个具体的bug?或者是为了了解某个功能是如何实现的?明确目的可以帮助…

系统安全设计规范(Word原件)

1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 资料获取:私信或者进主页。…

示例:WPF中推荐一个支持折叠展开的GridSpliter自定义控件GridSplitterBox

一、目的:推荐一个支持折叠展开的GridSpliter自定义控件GridSplitterBox 二、效果 实现功能:设置菜单显示位置,最小宽度,最大宽度,位置持久化保存 三、环境 VS2022 Net7 四、使用方式 1、安装nuget包:H…

能理解你的意图的自动化采集工具——AI和爬虫相结合

⭐️我叫忆_恒心,一名喜欢书写博客的研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支…

pytest测试框架flaky插件重试失败用例

Pytest提供了丰富的插件来扩展其功能,本章介绍下插件flaky ,用于在测试用例失败时自动重新运行这些测试用例。与前面文章介绍的插件pytest-rerunfailures功能有些类似,但是功能上不如pytest-rerunfailures插件丰富。 flaky官方并没有明确pyt…

中国企业数字化转型现状、趋势和挑战

一、来自不同行业、不同所有制的145家企业的调查 为了了解中国企业数字化转型的现状、趋势和挑战,2022年我们完成了一次在线问卷调查。 受访企业达145家,国内企业111家,占比77%(其中央企占总比例51%),民营…

【Python机器学习】k均值聚类——矢量量化,或者将k均值看作分解

虽然k均值是一种聚类算法,但在k均值和分解方法之间存在一些相似之处。k均值尝试利用簇中心来表示每个数据点,可以看作仅用一个分量来表示每个数据点,该分量由簇中心给出。这种观点将k均值看作是一种分解方法,其中每个点用单一分量…

【计算机组成原理】部分题目汇总

计算机组成原理 部分题目汇总 一. 简答题 RISC和CICS 简要说明,比较异同 RISC(精简指令集)注重简单快速的指令执行,使用少量通用寄存器,固定长度指令,优化硬件性能,依赖软件(如编译…