Python 递归读取目录中所有文件内容

答案:Python中递归读取目录所有文件内容可用os.walk()或pathlib.Path.rglob()方法,前者通过三元组遍历目录,后者语法更简洁;需注意文件编码、类型及大文件内存问题,建议按需选择文本或二进制模式读取。

python 递归读取目录中所有文件内容

Python 递归读取目录中所有文件内容

在 Python 中,可以使用 os.walk()pathlib.Path.rglob() 来递归遍历目录并读取所有文件的内容。下面介绍两种常用方法,适用于不同场景。

1. 使用 os.walk() 遍历并读取文件内容

os.walk() 是传统且高效的方式,能够递归进入子目录,返回目录路径、子目录名和文件名。

import os

def read_all_files_with_os_walk(root_dir):for dirpath, dirnames, filenames in os.walk(root_dir):for filename in filenames:file_path = os.path.join(dirpath, filename)try:with open(file_path, 'r', encoding='utf-8') as f:content = f.read()print(f"--- 内容来自: {file_path} ---")print(content)except Exception as e:print(f"无法读取文件 {file_path}: {e}")

调用方式:

立即学习“Python免费学习笔记(深入)”;

read_all_files_with_os_walk("/your/directory/path")

2. 使用 pathlib.Path.rglob() 更简洁的写法

pathlib 是 Python 3.4+ 推荐的路径操作模块,rglob() 可直接匹配所有符合条件的文件,语法更直观。

from pathlib import Path

def read_all_files_with_pathlib(root_dir):root_path = Path(root_dir)

匹配所有文件(可改为特定后缀如 "*.txt")

for file_path in root_path.rglob("*"):    if file_path.is_file():        try:            content = file_path.read_text(encoding='utf-8')            print(f"--- 内容来自: {file_path} ---")            print(content)        except Exception as e:            print(f"无法读取文件 {file_path}: {e}")

调用方式:

立即学习“Python免费学习笔记(深入)”;

read_all_files_with_pathlib("/your/directory/path")

3. 注意事项与建议

某些文件可能不是文本文件(如图片、二进制文件),使用 read_text()open(..., 'r') 会报错,必要时可用二进制模式判断或跳过。指定编码很重要,utf-8 覆盖大多数情况,但遇到 gbk 等中文编码文件时需调整。若只想读取特定类型文件,可修改匹配模式,例如:root_path.rglob("*.py") 只读取 Python 文件。大文件建议逐行读取(如使用 for line in f)避免内存溢出。

基本上就这些,根据需求选择合适的方法即可。

以上就是Python 递归读取目录中所有文件内容的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1381428.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月14日 22:57:08
下一篇 2025年12月14日 22:57:19

相关推荐

  • Python 环境常见冲突与解决方法

    使用虚拟环境隔离项目依赖,避免包版本与Python版本冲突。1. 用venv或conda隔离环境,通过requirements.txt锁定版本;2. 用pyenv或py launcher管理多Python版本,创建环境时指定版本;3. 激活环境后验证python和pip路径,确保安装到正确环境;4.…

    2025年12月14日
    000
  • Python 捕获所有异常的做法与风险

    应谨慎使用捕获所有异常,推荐用except Exception:避免拦截系统级异常;过度宽泛的捕获会掩盖错误、阻止程序终止、影响日志和资源释放;应优先捕获具体异常,记录日志并保留traceback,确保程序稳定与可维护。 在 Python 中,捕获所有异常通常使用 except: 或 except …

    2025年12月14日
    000
  • python垃圾回收的机制过程

    Python通过引用计数、标记-清除和分代回收协同管理内存。引用计数实时回收无引用对象,但无法处理循环引用;标记-清除从根对象出发标记可达对象,清除未标记的循环引用垃圾;分代回收将对象按存活时间分为三代,优先回收短命的第0代,提升效率。开发者可借助weakref避免循环引用导致的内存泄漏。 Pyth…

    2025年12月14日
    000
  • Python 语法基础入门指南

    掌握Python基础需理解变量、控制结构、函数和列表。Python语法简洁,用缩进组织代码,变量无需声明类型,常见数据类型包括int、float、str和bool;字符串可用单双引号定义,支持动态类型但不可混用操作。条件判断使用if、elif、else,注意冒号与缩进;循环有for和while两种,…

    2025年12月14日
    000
  • Python 初学者环境搭建的全流程案例

    刚接触 Python 的人最常遇到的问题之一就是环境不会配,跑不起来代码。其实只要按步骤来,整个过程并不复杂。下面是一个适合零基础的完整流程,从安装到运行第一个程序,一步步带你走通。 1. 安装 Python 解释器 Python 程序需要解释器来运行。去官网下载是最稳妥的方式。 打开浏览器,访问 …

    2025年12月14日
    000
  • pip install 与 requirements.txt 的结合使用

    requirements.txt是列出Python项目依赖包及版本的文件,通过pip freeze > requirements.txt导出当前环境依赖,再用pip install -r requirements.txt在新环境中安装相同依赖,确保环境一致性;建议结合虚拟环境使用,团队协作时提…

    2025年12月14日
    000
  • Python官网模块索引的使用技巧_Python官网标准库快速查找方法

    首先通过模块索引页面按字母顺序查找,其次利用官网全局搜索功能按功能关键词检索,最后可在本地交互环境使用help()函数离线查询,三种方法高效定位Python标准库文档。 如果您需要在Python官方文档中快速定位并查找标准库模块的详细信息,可能会因为不熟悉文档结构而花费过多时间。以下是几种高效使用P…

    2025年12月14日
    000
  • 如何在 Python 中使用 GPU 环境

    首先确认硬件支持并安装NVIDIA驱动,运行nvidia-smi查看CUDA版本;然后通过pip或conda安装支持GPU的PyTorch或TensorFlow,如pip install torch –index-url https://download.pytorch.org/whl/…

    2025年12月14日
    000
  • Python 异常处理中的常见误区

    避免捕获所有异常,应只处理特定异常如ZeroDivisionError;2. 禁止空except块,需记录日志或提示;3. 应打印具体异常信息而非固定消息;4. finally块内不应抛出新异常以防掩盖原始错误;5. try范围不宜过大,应精准定位可能出错的代码。 Python 异常处理是编写健壮程…

    2025年12月14日
    000
  • Python 如何高效比对两个文件是否相同

    判断文件是否相同可通过哈希比对、filecmp模块、分块比对和元信息预筛实现,分别适用于大文件、简单场景、超大文件和批量处理,兼顾效率与准确性。 判断两个文件是否相同,关键在于准确与效率的平衡。直接读取全部内容对比虽然简单,但对大文件不友好。以下是几种高效且实用的方法。 1. 使用文件哈希值比对 通…

    2025年12月14日
    000
  • Python 判断文件是否可读可写可执行

    在 Python 中判断文件是否具有可读、可写或可执行权限,可以使用 os.access() 函数。这个函数结合特定的模式参数,能直接检查当前用户对指定路径的访问权限。 1. 使用 os.access() 检查文件权限 os.access(path, mode) 接受两个参数:文件路径和访问模式。常…

    2025年12月14日
    000
  • Python csv.DictReader 与 DictWriter 使用技巧

    csv.DictReader和DictWriter通过字典操作提升CSV读写效率。1. DictReader按字段名读取,支持手动指定表头、处理缺失或多余列;2. DictWriter写入时需调用writeheader(),注意newline=”避免空行,并可控制缺失键行为;3. 中文处…

    2025年12月14日
    000
  • Python 嵌套条件语句的最佳实践

    优先使用提前返回减少嵌套:def process_user_data(user): if not user: return “Invalid user” if not user.is_active: return “User not active” i…

    2025年12月14日
    000
  • Python 错误消息 traceback 的解读方法

    先看最后的错误类型和描述,再定位文件行号,最后结合调用栈从下往上分析执行路径。 当你的Python程序出错时,解释器会生成一段以“Traceback (most recent call last)”开头的错误消息。这段信息不是乱码,而是帮你快速定位问题的路线图。关键在于从下往上看,并抓住三个核心部分…

    2025年12月14日
    000
  • Python f-string 格式化字符串详解

    f-string是Python 3.6+的字符串格式化方法,通过f前缀和{}嵌入变量或表达式,支持数值格式化、函数调用与属性访问,语法简洁高效。 Python 的 f-string(格式化字符串字面值)自 3.6 版本引入,是一种简洁高效的字符串格式化方式。它通过在字符串前加 f 或 F 前缀,将变…

    2025年12月14日
    000
  • Python 运算符大全与用法

    Python中的运算符包括算术、比较、逻辑、成员、身份和位运算符,用于执行数学计算、值比较、条件判断、序列检查、对象身份对比及二进制操作,掌握它们可提升数据处理与程序控制能力。 Python 中的运算符用于执行变量和值之间的操作,是编程中不可或缺的一部分。下面将系统介绍 Python 中常见的运算符…

    2025年12月14日
    000
  • Python 文件写入的原子性保障

    Python 文件写入的原子性,指的是在写入过程中确保文件要么完整写入,要么保持原有状态,避免因程序崩溃、系统断电等原因导致文件处于中间或损坏状态。直接对原文件进行写操作不具备原子性,但可以通过一些方法来保障。 使用临时文件 + 重命名实现原子写入 最常见且可靠的方式是:先将数据写入一个临时文件,写…

    2025年12月14日
    000
  • Linux 下常见 Python 安装问题排查

    c++kquote>答案是新手在Linux安装Python常遇命令未识别、模块安装失败、SSL错误及多版本冲突问题。需安装对应系统依赖如build-essential和python3-dev,使用python3/pip3命令或创建软链接,确保OpenSSL开发库就位以支持SSL,避免修改默认P…

    2025年12月14日
    000
  • Python 三元运算符的用法

    Python三元运算符使用“值1 if 条件 else 值2”语法,根据条件真假选择赋值,适用于简单判断如变量初始化、默认值设置等,示例:age=18时status=”成年” if age>=18 else “未成年”;应注意避免嵌套以保持代码可…

    2025年12月14日
    000
  • Python 算术运算符的应用实例

    Python中的算术运算符用于基本数学计算,包括加、减、乘、除、整除、取模和幂运算,广泛应用于数据处理与算法中。1. 基本运算符有+、-、、/、//、%和,分别实现加法、减法、乘法、浮点除法、整除、取模和幂运算,示例中a=10、b=3时,a+b输出13,a-b输出7,ab输出30,a/b输出3.33…

    2025年12月14日
    000

发表回复

登录后才能评论
关注微信