对文件内的文件名生成目录,方便查阅
import os
import re# 定义要查找的目录路径
path = r"J:\...\顺序目录" # 要遍历的主目录路径# 定义输出的目录文件路径
output_file = r"J:\...\目录_中文文件.txt" # 保存结果的文件路径# 判断文件名是否包含中文字符
def contains_chinese(text):return bool(re.search(r'[\u4e00-\u9fff]', text)) # 检查文件名中是否包含中文字符,返回布尔值# 遍历路径并生成文件目录
def generate_file_directory(path, output_file):try:# 打开输出文件with open(output_file, "w", encoding="utf-8") as f: # 以写入模式打开文件,编码为 UTF-8f.write("文件目录列表(只包含中文文件名):\n\n") # 写入文件开头标题f.flush() # 立即将缓冲区内容写入文件print("文件目录列表(只包含中文文件名):\n") # 在控制台打印标题,用于调试# 遍历主目录中的 Day 文件夹for day_dir in sorted(os.listdir(path)): # 列出主目录中的所有文件和文件夹,并按名称排序day_path = os.path.join(path, day_dir) # 拼接得到 Day 文件夹的完整路径if os.path.isdir(day_path) and day_dir.startswith("Day"): # 判断当前是否是 Day 文件夹# 写入 Day 标题title = f"{day_dir}:\n" # 格式化 Day 文件夹标题f.write(title) # 写入标题到文件f.flush() # 刷新缓冲区os.fsync(f.fileno()) # 强制将数据写入磁盘print(title, end="") # 在控制台打印标题# 遍历 Day 文件夹内容for root, dirs, files in os.walk(day_path): # 遍历当前 Day 文件夹下的所有子目录和文件# 获取当前目录的相对路径relative_root = os.path.relpath(root, day_path) # 将当前目录转换为相对于 Day 文件夹的路径# 筛选包含中文文件的文件名chinese_files = [file for file in files if contains_chinese(file)] # 筛选出文件名中包含中文的文件# 如果当前目录有符合要求的文件,则写入目录标题if chinese_files:# 判断是否需要使用特殊格式 "-笔记:"、"-视频:" 等if "笔记" in relative_root: # 如果当前目录路径中包含 "笔记"section_title = "-笔记:\n"elif "代码" in relative_root: # 如果当前目录路径中包含 "代码"section_title = "-代码:\n"elif "课后作业" in relative_root: # 如果当前目录路径中包含 "课后作业"section_title = "-课后作业:\n"elif "课件" in relative_root: # 如果当前目录路径中包含 "课件"section_title = "-课件:\n"elif "软件" in relative_root: # 如果当前目录路径中包含 "软件"section_title = "-软件:\n"elif "视频" in relative_root: # 如果当前目录路径中包含 "视频"section_title = "-视频:\n"else:section_title = f"{relative_root}:\n" # 如果不属于上述分类,则直接写入相对路径作为标题# 写入子目录标题f.write(section_title) # 将子目录标题写入文件f.flush() # 刷新缓冲区os.fsync(f.fileno()) # 强制将数据写入磁盘print(section_title, end="") # 在控制台打印子目录标题# 写入文件名,使用缩进格式for file in chinese_files: # 遍历所有符合条件的文件content = f" ——{file}\n" # 格式化为缩进显示的文件名f.write(content) # 将文件名写入文件f.flush() # 实时写入到文件os.fsync(f.fileno()) # 强制刷新到磁盘print(content, end="") # 在控制台打印文件名# 添加空行分隔不同子目录f.write("\n") # 写入空行f.flush() # 刷新缓冲区os.fsync(f.fileno()) # 强制将空行写入文件print("\n", end="") # 在控制台打印空行print(f"\n目录已生成到文件: {output_file}") # 程序结束后打印成功提示except Exception as e:print(f"发生错误: {e}") # 捕获异常并打印错误信息# 调用函数生成目录
generate_file_directory(path, output_file) # 执行函数
详细注释说明
-
中文筛选逻辑:
- 函数
contains_chinese
使用正则表达式判断文件名中是否包含中文字符,匹配[\u4e00-\u9fff]
范围的字符。
- 函数
-
os.walk()
的作用:- 遍历指定目录及其子目录,返回当前目录路径(
root
)、子目录列表(dirs
)和文件列表(files
)。
- 遍历指定目录及其子目录,返回当前目录路径(
-
子目录分类:
- 通过判断目录路径中是否包含指定关键词(如
"笔记"
、"代码"
),为不同子目录生成对应的标题格式(如"-笔记:"
)。
- 通过判断目录路径中是否包含指定关键词(如
-
实时写入与控制台打印:
- 每次写入文件后,立即刷新缓冲区并强制写入磁盘:
f.flush() os.fsync(f.fileno())
- 同时将写入内容打印到控制台,便于调试和实时查看进度。
- 每次写入文件后,立即刷新缓冲区并强制写入磁盘:
-
Day 文件夹循环:
- 主目录中的子目录按名称排序,并筛选出以
"Day"
开头的文件夹进行处理。
- 主目录中的子目录按名称排序,并筛选出以
代码执行流程
- 打开目标文件并写入标题。
- 遍历主目录中的
Day
文件夹,对每个Day
文件夹写入标题。 - 遍历
Day
文件夹中的子目录和文件:- 根据目录名称分类(如
"-笔记:"
)。 - 筛选出包含中文的文件,并以缩进格式写入。
- 根据目录名称分类(如
- 每次写入后立即刷新文件内容,确保实时更新。
- 程序执行完毕后,生成文件包含所有符合条件的内容。
示例输出文件内容
文件目录列表(只包含中文文件名):Day01:
-笔记:——python第一课.txt-视频:——01-认识Python_1.mp4-代码:——比较运算符.pyDay02:
-课件:——第一章.pptx-视频:——02-第一个Python程序.mp4
相关文章:
对文件内的文件名生成目录,方便查阅
import os import re# 定义要查找的目录路径 path r"J:\...\顺序目录" # 要遍历的主目录路径# 定义输出的目录文件路径 output_file r"J:\...\目录_中文文件.txt" # 保存结果的文件路径# 判断文件名是否包含中文字符 def contains_chinese(text):retur…...
leetcode hot100 轮转数组
189. 轮转数组 已解答 中等 相关标签 相关企业 提示 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮…...

定位方式:css
使用相对路径 div ul #div下的所有ul,空格表示相对路径(这个实际中用的多一些) 绝对路径-一般不用绝对路径 html>head>div,“>”表示根路径 使用class名称定位 使用.表示 使用id定位 使用#表示 使用属性定位 [属性名…...

谷歌浏览器的网络连接问题解决方案
在数字化时代,网络浏览器已成为日常工作和生活中不可或缺的工具。谷歌浏览器以其快速、稳定和丰富的功能深受用户喜爱。然而,就像其他软件一样,谷歌浏览器也可能遇到网络连接问题,这可能由多种因素引起。本文将为您提供一系列解决…...

保护模式基本概念
CPU 架构 RISC(Reduced Instruction Set Computer) 中文即"精简指令集计算机”。RISC构架的指令格式和长度通常是固定的(如ARM是32位的指令)、且指令和寻址方式少而简单、大多数指令在一个周期内就可以执行完毕 CISC&…...
Linux程序设计(第四版)| 学习笔记
上次学习Linux相关内容还是上学的时候为了应付考试,最近有项目涉及Linux,重新学习以下。 很多年前关于Linux的总结 一、入门 1.概念 (1) UNIX 1)定义:指的是一种遵循特定规范的计算机操作系统。 2)特点:简单性、集中性、可重用…...
【Python-中级】Python中的线程池:ThreadPoolExecutor
Python中的线程池:from concurrent.futures import ThreadPoolExecutor 在Python中,实现多线程编程的方法有很多,而ThreadPoolExecutor 是一个简单且高效的线程池工具。它提供了高层次的接口,用于并发地运行任务,同时隐藏了许多复杂的底层细节,非常适合日常的多线程任务…...
医疗信息系统有哪些
医疗信息系统(Health Information Systems, HIS)是用于管理和存储患者健康数据、医疗记录、医院运营数据等信息的技术平台。这些系统通过自动化、集成和分析数据,提高医疗服务的效率、质量和安全性。以下是一些主要的医疗信息系统及其功能&am…...

JVM系列(十二) -常用调优命令汇总
最近对 JVM 技术知识进行了重新整理,再次献上 JVM系列文章合集索引,感兴趣的小伙伴可以直接点击如下地址快速阅读。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的加载过程JVM系列(三) -内存布局详解JVM系列(四) -对象的创建过程JVM系列(五) -对象的内存分…...

修改采购订单BAPI学习研究-BAPI_PO_CHANGE
这里是修改采购订单BAPI,修改订单数量的简单应用 代码 *&---------------------------------------------------------------------* *& Report Z_BAPI_PO_CHANGE *&---------------------------------------------------------------------* *& C…...

使用uniapp开发微信小程序-框架搭建
最近要开发一个小程序,为了降低学习成本,最后还是选择使用uniapp来开发,但是由于电脑性能不行,实在不想多跑一个应用程序,就简单搭建了一个可以用vscode跑的uniapp项目。 项目整体技术栈:vue3 pinia type…...
雅思真题短语(九)
真题短语收录在合辑 141华夫饼 waffles 142防腐剂 no preservatives 143精制 refined sugar 144水分充足 plenty of moisture 145五角星 five-pointed star 146树皮 tree bark 147汁液 liquid sap 148敲击 several taps 149蒸发 water evaporates 150干旱的山谷 arid valleys …...
系统压力测试助手——stress-ng
1、背景 在系统性能测试和压力测试中,stress-ng 是一个非常强大的工具,广泛应用于对 Linux 系统进行各种硬件和软件方面的负载测试。它能够模拟多种极端负载情况,帮助开发人员和运维人员检查系统在高负载下的表现,以便发现潜在的…...

java如何使用poi-tl在word模板里渲染多张图片
1、poi-tl官网地址 http://deepoove.com/poi-tl/ 2、引入poi-tl的依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>3、定义word模板 释义…...
UE5 UHT GENERATED_BODY() GENERATED_USTRUCT_BODY()
你在 .h 文件中写的 GENERATED_BODY() 宏本身并不是 GetPrivateStaticClass() 函数的声明。 实际上,GENERATED_BODY() 是一个预处理器宏,它会被 Unreal Header Tool (UHT) 处理。 UHT 会读取你的 .h 文件,识别 UCLASS() 和 GENERATED_BODY(…...
内网穿透ubuntu20 docker coplar
sudo apt-get install curl curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash ubuntu-base报错 /sbin/init:No such file or directory解决办法 apt install systemd 命令安装即可 cpolar version 1.3 token认证 登录cpolar官网后台…...
windows C++ TCP客户端
demo有一下功能 1、心跳包 2、断开重连 3、非阻塞 4、接受数据单独线程处理 #include <iostream> #include <winsock2.h> #include <ws2tcpip.h> #include <windows.h> #include <string> #include <process.h> // 用于Windows下的线程相…...
Linux xargs 命令使用教程
简介 xargs 是一个功能强大的 Linux 命令,用于从标准输入构建和执行命令。它接受一个命令的输出,并将其作为参数提供给另一个命令。它在处理大量输入时特别有用,其含义可以解释为:extended arguments,使用 xargs 允许…...
什么是异步处理
什么是异步处理 if ( conditionA && conditionB )mqSendService.sendMessageAsync(MqTopicConstant.YOUR_TOPIC, ID,JSONObject.toJSONString(CommonMsg.builder().data(ID).msgType(TypeCode).build()));}sendMessageAsync 发送消息的过程不会阻塞当前的执…...

【解决问题】Java2DRenderer生成图片时中文乱码 Linux安装字体
一,问题 在使用Java2DRenderer框架将html生成图片时,html中的中文文本在图片上显示框框,即出现了中文乱码。在确认使用正确的字符编码utf-8之后,并且确认了修改成unicode也同样乱码的情况下,找到了真正的原因…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...