对文件内的文件名生成目录,方便查阅

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)  # 执行函数

详细注释说明

  1. 中文筛选逻辑

    • 函数 contains_chinese 使用正则表达式判断文件名中是否包含中文字符,匹配 [\u4e00-\u9fff] 范围的字符。
  2. os.walk() 的作用

    • 遍历指定目录及其子目录,返回当前目录路径(root)、子目录列表(dirs)和文件列表(files)。
  3. 子目录分类

    • 通过判断目录路径中是否包含指定关键词(如 "笔记""代码"),为不同子目录生成对应的标题格式(如 "-笔记:")。
  4. 实时写入与控制台打印

    • 每次写入文件后,立即刷新缓冲区并强制写入磁盘:
      f.flush()
      os.fsync(f.fileno())
      
    • 同时将写入内容打印到控制台,便于调试和实时查看进度。
  5. Day 文件夹循环

    • 主目录中的子目录按名称排序,并筛选出以 "Day" 开头的文件夹进行处理。

代码执行流程

  1. 打开目标文件并写入标题。
  2. 遍历主目录中的 Day 文件夹,对每个 Day 文件夹写入标题。
  3. 遍历 Day 文件夹中的子目录和文件:
    • 根据目录名称分类(如 "-笔记:")。
    • 筛选出包含中文的文件,并以缩进格式写入。
  4. 每次写入后立即刷新文件内容,确保实时更新。
  5. 程序执行完毕后,生成文件包含所有符合条件的内容。

示例输出文件内容

文件目录列表(只包含中文文件名):Day01:
-笔记:——python第一课.txt-视频:——01-认识Python_1.mp4-代码:——比较运算符.pyDay02:
-课件:——第一章.pptx-视频:——02-第一个Python程序.mp4

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重温设计模式--单例模式

文章目录 单例模式(Singleton Pattern)概述单例模式的实现方式及代码示例1. 饿汉式单例(在程序启动时就创建实例)2. 懒汉式单例(在第一次使用时才创建实例) 单例模式的注意事项应用场景 C代码懒汉模式-经典…

金仓数据库安装-Kingbase v9-centos

在很多年前有个项目用的金仓数据库,上线稳定后就没在这个项目了,只有公司的开发环境还在维护,已经好多年没有安装过了,重温一下金仓数据库安装,体验一下最新版本,也做一个新版本的试验环境; 一、…

LabVIEW中什么和C 语言指针类似?

在LabVIEW中,与C语言指针类似的概念是 引用 (Reference)。 引用在LabVIEW中主要用于以下几个方面: 数据引用:LabVIEW通过引用传递数据,而不是复制数据。通过引用,多个VIs可以共享数据而不需要复制整个数据结构&#xf…

医疗大模型威胁攻击下的医院AI安全:挑战与应对策略

一、引言 1.1 研究背景与意义 随着人工智能技术的迅猛发展,医疗大模型作为一种新兴的技术手段,正逐渐渗透到医疗领域的各个环节,为医疗服务的数字化转型带来了前所未有的机遇。从辅助诊断到疾病预测,从个性化治疗方案的制定到医疗资源的优化配置,医疗大模型展现出了巨大…

在 Vue3 项目中安装和配置 Three.js

简介 Three.js 是一个轻量级的 WebGL 封装库,用于在浏览器中渲染复杂的 3D 图形。它提供了便捷的 API,可以快速构建 3D 场景、对象和动画。 Vue.js 是一个渐进式 JavaScript 框架,擅长构建用户界面。其响应式数据绑定和组件系统使得复杂的交…

编译原理复习---正则表达式+有穷自动机

适用于电子科技大学编译原理期末考试复习。 1. 正则表达式 正则表达式(Regular Expression,简称regex或regexp)是一种用于描述、匹配和操作文本模式的强大工具。它由一系列字符和特殊符号组成,这些字符和符号定义了一种搜索模式…

漏洞检测工具:HOST头部攻击

HOST头部攻击 漏洞定义 Host头部字段在HTTP协议中用于指定请求所针对的域名,以便服务器能够正确地将请求路由到相应的Web应用程序。攻击者通过篡改HTTP请求中的Host头部字段来执行恶意操作。 漏洞危害 Host头部攻击的危害在于它能导致敏感信息泄露、恶意内容执行…

ROS1入门教程6:复杂行为处理

一、新建项目 # 创建工作空间 mkdir -p demo6/src && cd demo6# 创建功能包 catkin_create_pkg demo roscpp rosmsg actionlib_msgs message_generation tf二、创建行为 # 创建行为文件夹 mkdir action && cd action# 创建行为文件 vim Move.action# 定义行为…

DL作业11 LSTM

习题6-4 推导LSTM网络中参数的梯度, 并分析其避免梯度消失的效果 LSTM(长短期记忆网络)是一种特殊的循环神经网络(RNN),旨在解决普通 RNN 在处理长序列时遇到的梯度消失和梯度爆炸问题。它通过设计多个门…

WWW23-多行为级联|级联图卷积网络的多行为推荐

论文:https://arxiv.org/abs/2303.15720 代码:https://github.com/SS-00-SS/MBCGCN 这篇论文MB-CGCN和上一篇CRGCN是同一个团队的,都是级联的方式。一个用了残差,一个用了特征转换,文章最后有discussion讨论了两者的不…

JAVA开发入门学习七- 数组

数组的概念 概念 数组: 是多个相同类型数据按照一定排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理 数组中的概念 数组名: 数组的名称,命名 下标: 从0开始 元素:…

【编辑器扩展】打开持久化路径/缓存路径/DataPath/StreamingAssetsPath文件夹

代码 [MenuItem("Assets/Open Explorer/PersistentDataPath")]public static void OpenPersistentDataPath(){Application.OpenURL(Application.persistentDataPath);}[MenuItem("Assets/Open Explorer/DataPath")]public static void OpenDataPath(){Appl…

链路聚合与GVRP的混合构建(eNSP)

目录 拓扑图: 前置操作: GVRP全局开启: 查询: 实验背景:前面依次搭建了交换机的链路聚合实验手册以及动态vlan GVRP,为了模拟真实环境,本次实验将两者结合。 拓扑图: 前置操作&…

由于这些关键原因,我总是手边有一台虚拟机

概括 虚拟机提供了一个安全的环境来测试有风险的设置或软件,而不会影响您的主系统。设置和保存虚拟机非常简单,无需更改主要设备即可方便地访问多个操作系统。运行虚拟机可能会占用大量资源,但现代 PC 可以很好地处理它,为实验和工作流程优化提供无限的可能性。如果您喜欢使…

华为ensp--BGP路由反射器

学习新思想、争做新青年,今天学习的是BGP路由反射器。 实验目的 理解BGP路由反射器的应用场景 理解BGP路由反射器的工作原理 掌握BGP路由反射器的基本配置方法 实验内容 本实验网络包含了两个AS,两个Cluster。R1、R2、R3属于Cluster 1&#xff0c…

使用idea创建JDK8的SpringBoot项目

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 使用idea创建JDK8的SpringBoot项目 前言我们经常在创建新的springboot项目,默认使用的是spring.io进行创建,但是它总是只会提供高版本的创建方式&…

初学stm32 --- 定时器中断

目录 时钟选择: 内部时钟选择​编辑 时钟计算方法: 计数器模式 向下计数模式(时钟分频因子1,ARR36) 向上计数模式(时钟分频因子1,ARR36) 中央对齐计数模式(时钟分频因…

windows下安装配置anaconda及常用的conda命令

Anaconda极大的简化了Python环境和库的管理,其最大的作用就是可以创建、管理多个不同python版本的虚拟环境,起到不同环境相互隔离、互不干扰、避免环境冲突的目的。如果使用本地Python安装多个包,经常会遇到包冲突,导致整个python…

安装CPU版的torch(清华源)

1、安装指令: pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple2、验证torch是否安装成功 // 使用python验证 import torch print(torch.__version__)能正常打印版本即表示安装成功,如下图

ASP.NET Core Web API 控制器

文章目录 一、基类:ControllerBase二、API 控制器类属性三、使用 Get() 方法提供天气预报结果 在深入探讨如何编写自己的 PizzaController 类之前,让我们先看一下 WeatherController 示例中的代码,了解它的工作原理。 在本单元中&#xff0c…