遍历目录树的Python方法

一、os.walk()

Python提供了os.walk()方法可以方便地遍历文件夹中的所有文件。os.walk()方法需要传入一个参数rootdir,即需要遍历的文件夹的路径。它会返回一个三元的元组,其中第一个元素是当前文件夹的路径,第二个元素是当前文件夹中所有子文件夹的名称,第三个元素是当前文件夹中所有文件的名称。我们可以利用这个三元元组递归遍历整个文件夹中的所有文件和文件夹。

import os

def list_files(startpath):
    for root, dirs, files in os.walk(startpath):
        level = root.replace(startpath, '').count(os.sep)
        indent = ' ' * 4 * level
        print('{}{}/'.format(indent, os.path.basename(root)))
        subindent = ' ' * 4 * (level + 1)
        for file in files:
            print('{}{}'.format(subindent, file))
        
list_files('path/to/folder')

上面的代码会从指定的文件夹中递归遍历文件夹中的所有文件和文件夹,并打印它们的相对路径。它使用了字符串的乘法运算符 * 来生成空格,从而实现缩进的效果。

二、glob.glob()

除了os.walk()方法外,Python还提供了glob.glob()方法,可以用来匹配特定模式的文件名。它需要传入一个包含通配符的字符串,然后返回匹配该模式的所有文件名。

import glob

for file in glob.glob('path/to/folder/*'):
    print(file)

上面代码中,我们使用通配符 * 匹配了path/to/folder/文件夹中的所有文件名,并打印它们。

三、递归遍历文件夹的扩展应用

在递归遍历文件夹的基础上,我们还可以实现一些更加复杂的功能。比如,统计指定文件夹中所有文件的大小,并按照文件类型进行分类。

import os

def get_size(startpath):
    total_size = 0
    file_dict = {}
    for root, dirs, files in os.walk(startpath):
        for file in files:
            path = os.path.join(root, file)
            size = os.path.getsize(path)
            total_size += size
            ext = os.path.splitext(file)[1]
            if ext not in file_dict:
                file_dict[ext] = 0
            file_dict[ext] += size
                        
    for ext, size in file_dict.items():
        print(f"{ext}: {size/1024/1024:.2f} MB")
    print(f"Total size: {total_size/1024/1024:.2f} MB")
        
get_size('path/to/folder')

上面的代码会递归遍历文件夹并统计其中所有文件的大小,并按照文件类型进行分类和汇总。我们使用了os.path.splitext()方法来获取文件的扩展名,并使用了字典来进行文件类型和文件大小的统计。

四、完整代码示例

下面是一个完整的例子,演示了如何递归遍历文件夹并打印所有文件的相对路径:

import os

def list_files(startpath):
    for root, dirs, files in os.walk(startpath):
        level = root.replace(startpath, '').count(os.sep)
        indent = ' ' * 4 * level
        print('{}{}/'.format(indent, os.path.basename(root)))
        subindent = ' ' * 4 * (level + 1)
        for file in files:
            print('{}{}'.format(subindent, file))
        
list_files('path/to/folder')

如果我们想要按文件类型分类并统计文件大小的话,可以使用如下代码:

import os

def get_size(startpath):
    total_size = 0
    file_dict = {}
    for root, dirs, files in os.walk(startpath):
        for file in files:
            path = os.path.join(root, file)
            size = os.path.getsize(path)
            total_size += size
            ext = os.path.splitext(file)[1]
            if ext not in file_dict:
                file_dict[ext] = 0
            file_dict[ext] += size
                        
    for ext, size in file_dict.items():
        print(f"{ext}: {size/1024/1024:.2f} MB")
    print(f"Total size: {total_size/1024/1024:.2f} MB")
        
get_size('path/to/folder')

这个代码会遍历指定的文件夹,并打印出其中所有文件按照后缀名分别的大小和总大小。

总结

通过本文的介绍,我们学习了Python中的两种遍历文件夹的方法,分别是os.walk()和glob.glob()方法。此外,我们还演示了递归遍历文件夹的扩展应用,并通过完整的代码示例对这些内容进行了说明。通过本文的学习,相信你已经掌握了在Python中遍历文件夹的基本方法和一些应用技巧。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/300414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-29 12:51
下一篇 2024-12-29 12:51

相关推荐

  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29

发表回复

登录后才能评论