对文件内的文件名生成目录,方便查阅
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也同样乱码的情况下,找到了真正的原因…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
