当前位置: 首页 > news >正文

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

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

相关文章:

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

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模板 释义&#xf…...

UE5 UHT GENERATED_BODY() GENERATED_USTRUCT_BODY()

你在 .h 文件中写的 GENERATED_BODY() 宏本身并不是 GetPrivateStaticClass() 函数的声明。 实际上&#xff0c;GENERATED_BODY() 是一个预处理器宏&#xff0c;它会被 Unreal Header Tool (UHT) 处理。 UHT 会读取你的 .h 文件&#xff0c;识别 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 命令&#xff0c;用于从标准输入构建和执行命令。它接受一个命令的输出&#xff0c;并将其作为参数提供给另一个命令。它在处理大量输入时特别有用&#xff0c;其含义可以解释为&#xff1a;extended arguments&#xff0c;使用 xargs 允许…...

什么是异步处理

什么是异步处理 if ( conditionA && conditionB &#xff09;mqSendService.sendMessageAsync(MqTopicConstant.YOUR_TOPIC, ID,JSONObject.toJSONString(CommonMsg.builder().data(ID).msgType(TypeCode).build()));}sendMessageAsync 发送消息的过程不会阻塞当前的执…...

【解决问题】Java2DRenderer生成图片时中文乱码 Linux安装字体

一&#xff0c;问题 在使用Java2DRenderer框架将html生成图片时&#xff0c;html中的中文文本在图片上显示框框&#xff0c;即出现了中文乱码。在确认使用正确的字符编码utf-8之后&#xff0c;并且确认了修改成unicode也同样乱码的情况下&#xff0c;找到了真正的原因&#xf…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...