使用 Python 实现文件递归遍历的三种方式

下面是详细的讲解:

一、递归遍历文件方法介绍

在 Python 中,文件递归遍历主要有以下三种方式:

1. os 模块下的 walk 方法

os 模块提供了一个 walk 方法,该方法可以在文件或目录中递归搜索所有文件并返回一个包含当前文件夹路径、子文件夹列表和文件列表的元组。

代码示例如下:

import os

def recurse_folder(folder_path):
    for root, dirs, files in os.walk(folder_path):
        print(f'当前文件夹路径:{root}')
        print(f'子文件夹列表:{dirs}')
        print(f'文件列表:{files}')

上面的代码会递归遍历指定的 folder_path 文件夹,并输出每个文件夹的路径、子文件夹列表和文件列表。

2. pathlib 模块的 Path 方法

pathlib 模块是 Python3 中的新增模块,提供了一种简化和更好的处理文件路径的方法。在其中,pathlib.Path 类可以处理文件和文件夹路径,并可以递归遍历文件或目录。

代码示例如下:

import pathlib

def recurse_folder(folder_path):
    for item in pathlib.Path(folder_path).rglob('*'):
        print(item)

上面的代码使用 pathlib 模块的 Path 类递归遍历指定的 folder_path 文件夹,并输出每个文件或文件夹的完整路径。

3. glob 模块的 glob 方法

glob 模块是 Python 内置模块,提供了一个匹配文件路径的方法 glob.glob()。该方法返回一个包含与指定 pattern 匹配的文件路径和文件夹路径的列表。

代码示例如下:

import glob

def recurse_folder(folder_path):
    for file_path in glob.glob(folder_path + '/**/**', recursive=True):
        print(file_path)

上面的代码使用 glob.glob() 函数递归遍历指定的 folder_path 文件夹,并输出每个文件或文件夹的完全路径。

二、示例说明

下面给出两个示例来说明文件递归遍历的使用方法。

示例一

假设要递归遍历一个文件夹,找出其中的所有 .txt 文件,并输出它们的文件路径和文件内容。

使用 os 模块的 walk 方法实现的代码如下:

import os

def find_txt_files(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith('.txt'):
                file_path = os.path.join(root, file)
                with open(file_path, 'r') as f:
                    content = f.read()
                    print(f'文件路径:{file_path}')
                    print(f'文件内容:{content}')

使用 pathlib 模块的 Path 方法实现的代码如下:

import pathlib

def find_txt_files(folder_path):
    for file_path in pathlib.Path(folder_path).rglob('*.txt'):
        with open(file_path, 'r') as f:
            content = f.read()
            print(f'文件路径:{file_path}')
            print(f'文件内容:{content}')

同时使用 glob 模块的 glob 方法和 open 方法实现的代码如下:

import glob

def find_txt_files(folder_path):
    for file_path in glob.glob(folder_path + '/**/*.txt', recursive=True):
        with open(file_path, 'r') as f:
            content = f.read()
            print(f'文件路径:{file_path}')
            print(f'文件内容:{content}')

示例二

假设要递归遍历一个文件夹,找出其中所有的 .png 文件和 .jpg 文件,并将它们拷贝到另一个文件夹。

使用 os 模块的 walk 方法实现的代码如下:

import os
import shutil

def copy_image_files(folder_path, target_folder):
    if not os.path.exists(target_folder):
        os.mkdir(target_folder)

    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith(('.png', '.jpg')):
                file_path = os.path.join(root, file)
                shutil.copy(file_path, target_folder)
                print(f'已复制文件:{file_path}')

使用 pathlib 模块的 Path 方法实现的代码如下:

import pathlib
import shutil

def copy_image_files(folder_path, target_folder):
    if not os.path.exists(target_folder):
        os.mkdir(target_folder)

    for file_path in pathlib.Path(folder_path).rglob('*.*'):
        if file_path.suffix in ('.png', '.jpg'):
            shutil.copy(file_path, target_folder)
            print(f'已复制文件:{file_path}')

同时使用 glob 模块的 glob 方法和 shutil 模块实现的代码如下:

import glob
import shutil

def copy_image_files(folder_path, target_folder):
    if not os.path.exists(target_folder):
        os.mkdir(target_folder)

    for file_path in glob.glob(folder_path + '/**/*.+(png|jpg)', recursive=True):
        shutil.copy(file_path, target_folder)
        print(f'已复制文件:{file_path}')

以上就是使用 Python 实现文件递归遍历的三种方式的完整攻略以及两个示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用 Python 实现文件递归遍历的三种方式 - Python技术站

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

相关文章

  • C++关于类结构体大小和构造顺序,析构顺序的测试详解

    C++关于类结构体大小和构造顺序,析构顺序的测试详解 概述 在C++中,类和结构体具有相同的定义方式,而它们的大小、内存分配方式,构造和析构顺序等等却有所不同。本文将从各个方面渐进式地介绍类和结构体之间的差异,希望能够帮助大家更好地理解和使用C++语言。 类和结构体的内存分配 在C++中,类和结构体可以直接定义成员变量和成员函数,并在其中定义多个类型的数据。…

    other 2023年6月26日
    00
  • cmd环境变量命令set 设置永久环境变量命令setx

    当我们在Windows上运行命令行程序(如cmd.exe)时,环境变量是非常有用的。在这里,我将向你介绍如何使用 cmd 环境变量命令 set 和设置永久环境变量命令 setx。 set 命令 set 命令可以临时设置变量,只需在使用这些变量的同一会话期间保持它们的值。 对于每个变量,使用 set 命令时,需要手动输入变量名和值,并在两者之间用等号 ” = …

    other 2023年6月27日
    00
  • windowsserver2008r2安装

    Windows Server 2008 R2 安装 Windows Server 2008 R2 是微软发布的一款具有高度稳定性和安全性的操作系统,常用于企业服务器和云服务器中。本文将介绍Windows Server 2008 R2的安装方法。 硬件要求 在安装Windows Server 2008 R2之前,需要确保计算机的硬件符合以下要求: 64 位的处…

    其他 2023年3月29日
    00
  • word怎么设置小型大写字母small capitals?

    要在Word中设置小型大写字母(small capitals),请按照以下步骤进行操作: 首先,打开Word文档并选择要应用小型大写字母的文本。 在顶部菜单栏中,找到并点击“字体”选项卡。 在弹出的字体对话框中,您将看到一个名为“字体效果”的下拉菜单。点击该下拉菜单。 在下拉菜单中,您将看到一个选项称为“小型大写字母”(Small Capitals)。选择该…

    other 2023年8月16日
    00
  • 获取MSSQL 表结构中字段的备注、主键等信息的sql

    获取MSSQL 表结构中字段的备注、主键等信息的SQL,可通过查询系统表和视图来完成。 以下是获取列备注和主键信息的示例SQL: 获取表中所有列的备注信息和主键信息 SELECT c.name AS ColumnName, t.name AS DataType, c.is_nullable AS Nullable, p.value AS ColumnDesc…

    other 2023年6月25日
    00
  • npm install的–save和–save-dev使用说明(推荐)

    当使用npm install命令安装包时,可以使用–save和–save-dev选项来指定将包的依赖项添加到package.json文件中的不同部分。 –save选项将包添加到dependencies部分。这意味着该包是项目的运行时依赖项,必须在生产环境中使用。例如,如果你安装了一个名为lodash的包,并使用–save选项,那么lodash将被添加…

    other 2023年9月7日
    00
  • 该如何加载google-analytics(或其他第三方)的JS

    加载google-analytics或其他第三方JS的完整攻略分为以下几个步骤: 1. 获取JS代码 首先需要获取google-analytics或其他第三方JS的代码,可以通过访问对应官网或使用CDN地址来获取。 例如,获取Google Analytics的代码可以参考下面的步骤: 访问Google Analytics官网 创建或登录Google帐号; 配…

    other 2023年6月25日
    00
  • 长推:通过8个步骤分析加密项目团队

    当我们要评估一个加密项目时,分析团队是其中一个关键的步骤。团队是项目的核心,能够支持和推动其发展,因此了解团队的可靠性和可信度非常重要。本文将介绍长推攻略(也称“长微博”),其中包含了8个步骤,用于评估加密项目的团队。 步骤一:了解团队 首先,收集项目团队的信息。了解各成员的背景、经验和技能。这可以帮助您确定团队成员是否具有实际应用的技能和知识,以及他们是否…

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