Python利用递归和walk()遍历目录文件的方法示例

Python是一门非常强大的程序设计语言,在文件处理方面也有很好的库和函数。在Python中使用递归和walk()遍历目录文件是一种常见的方法,可以在文件管理、数据抓取等场合中使用。

一、什么是递归和walk函数

递归

递归是指函数自身调用自身,通过不断地自我调用来解决问题的一种思想。在Python中,可以轻松实现递归函数的编写,例如:

 def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

这个函数用来计算阶乘,基于递归思想,如果n大于0,则调用函数自身,并将n-1传入函数生成新的运算。

walk()

walk()函数是os模块提供的一个目录遍历函数,可以遍历指定的目录和子目录,返回一个三元组(root, dirs, files),其中root是指当前遍历的目录路径,dirs是子目录名称集合,files是指当前目录下的文件名称集合。示例代码如下:

import os
file_path = os.walk(r'C:\Users\Administrator\Desktop') # 将目录路径传递给walk函数遍历
for root, dirs, files in file_path:
    print(root) # 输出当前遍历的目录路径
    print(dirs) # 输出子目录名称
    print(files) # 输出当前目录下的文件名称

二、使用递归和walk()遍历目录文件

  1. 递归遍历并输出指定目录下所有文件的路径

下面代码中实现递归遍历并输出指定目录下所有文件的路径:

import os

def print_file_path(file_dir):
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            print(os.path.join(root, file)) # 输出文件路径
        for dir in dirs:
            print_file_path(os.path.join(root, dir)) # 递归遍历目录

print_file_path(r'C:\Users\Administrator\Desktop') # 下面是调用示例的代码
  1. 递归查找指定目录下的所有以.txt结尾的文件,并将文件路径存入txt文本中

下面代码中实现递归查找指定目录下的所有以.txt结尾的文件,并将文件路径存入txt文本中:

import os

def search_file(file_dir, file_type):
    with open(r'C:\Users\Administrator\Desktop\result.txt', mode='a', encoding='utf-8') as f:
        for root, dirs, files in os.walk(file_dir):
            for file in files:
                if file.endswith(file_type):
                    file_path = os.path.join(root, file)
                    f.write(file_path+'\n') # 将文件路径写入txt文本
            for dir in dirs:
                search_file(os.path.join(root, dir), file_type) # 递归遍历目录

search_file(r'C:\Users\Administrator\Desktop', '.txt') # 下面是调用示例的代码

以上是两个简单的使用递归和walk()遍历目录文件的方法示例,您可以根据自己的需求进行功能解读和代码编写,相信这些篇章能对你在此方面的研究工作有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python利用递归和walk()遍历目录文件的方法示例 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Python 记录日志的灵活性和可配置性介绍

    Python 记录日志的灵活性和可配置性介绍 Python 的 logging 模块是官方提供的日志记录模块,可以帮助我们快速方便地记录代码中的各种事件。它提供了很多种不同的日志记录方式,可以非常灵活地配置,满足不同应用场景的要求。 基本用法 使用 logging 模块非常简单,我们只需要导入模块,然后创建一个 logger 对象即可。使用 logger 对…

    python 2023年6月3日
    00
  • Python接口传输url与flask数据详解

    在Python中,我们可以使用接口传输URL和Flask框架进行数据传输。本文将介绍如何使用接口传输URL和Flask框架进行数据传输,并提供两个示例。 1. 接口传输URL 接口传输URL是一种常见的数据传输方式,它可以将URL作为参数传递给接口。以下是一个示例,演示如何使用接口传输URL: import requests url = ‘http://ex…

    python 2023年5月15日
    00
  • 对python sklearn one-hot编码详解

    对Python Sklearn One-Hot编码详解 什么是One-Hot编码? 在机器学习中,很多算法需要对文本或类别数据进行处理,而这些数据无法直接参与计算。例如,对于一个商品分类样本,我们很难直接把“服装”、“运动”等分类用数字表示。因此,我们需要一种编码方式,将这些分类数据转换为能够被机器学习算法学习的向量。 这种编码方式常见的有 One-Hot …

    python 2023年5月20日
    00
  • 浅析Python模块之间的相互引用问题

    下面我来详细讲解“浅析Python模块之间的相互引用问题”的完整攻略。 什么是Python模块? 在Python中,一个.py文件就被称为一个模块(Module),用于封装一段特定的功能代码。每一个模块都有自己的命名空间,可以包含函数、类、变量等等。 Python模块之间的相互引用 在开发过程中,我们常常需要在一个模块中引用另一个模块中的函数、类或变量。当一…

    python 2023年6月6日
    00
  • 通过numba模块给Python代码提速的方法详解

    关于“通过numba模块给Python代码提速的方法详解”的攻略,我来给您详细讲解一下。 什么是numba? Numba是一个基于LLVM的Just-In-Time(JIT)编译器,可以把Python代码快速编译成本地机器码。Numba是专门为数值计算和科学计算领域设计的,主要功能是针对numpy数组和Python函数进行优化,从而提高代码的执行效率。 nu…

    python 2023年6月3日
    00
  • 15面向对象特性

    面向对象特性 封装 在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用。要了解封装,离不开“私有化”,就是将类或者是函数中的某些属性限制在某个区域之内,外部无法调用。 封装的作用: 1、保护隐私(把不想别人知道的东西封装起来) 2、隔离复杂度(比如:电视机,我们看见的就是一…

    python 2023年4月24日
    00
  • 解决python ThreadPoolExecutor 线程池中的异常捕获问题

    解决Python ThreadPoolExecutor线程池中的异常捕获问题 在Python中使用ThreadPoolExecutor线程池进行多线程编程时,经常会遇到异常捕获的问题。如果没有正确处理,进程会崩溃并停止运行。本文将详细介绍如何解决Python ThreadPoolExecutor线程池中的异常捕获问题。 步骤1:使用submit()方法而不是…

    python 2023年5月13日
    00
  • 对python中执行DOS命令的3种方法总结

    对Python中执行DOS命令的3种方法总结 对于Python程序开发者,有时候我们需要在程序中执行一些DOS命令,例如创建目录、拷贝文件等等操作。Python提供了多种方法来执行这些命令,本文将总结三种Python中执行DOS命令的方法。 方法一:os.system() 使用os.system()方法可以执行DOS命令,只需将需要执行的命令作为字符串传递给…

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部