对文件内的文件名生成目录,方便查阅
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也同样乱码的情况下,找到了真正的原因…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
