Python 中遍历所有文件夹下的所有文件名

在数据处理和文件管理的过程中,很多时候我们需要获取某个目录下的所有文件名,包括子目录中的文件。Python 提供了一些非常方便的方法来实现这一功能。在本篇文章中,我们将深入探讨如何使用 Python 遍历文件夹,并获取所有文件的名称,同时将示例代码以 markdown 语法展示。

1. 设置环境

首先,请确保你已经安装了 Python 环境。 本文的代码示例在 Python 3.x 中编写。

2. 使用标准库 os 和 os.path

Python 的标准库 osos.path 提供了一系列操作系统相关的功能,比如遍历文件和目录。以下是一个基本的通过这两个库遍历文件夹和子文件夹中的文件的示例代码:

import os

def list_files_in_directory(directory):
    file_list = []
    for root, dirs, files in os.walk(directory):
        for file in files:
            file_list.append(os.path.join(root, file))  # 拼接获取完整路径
    return file_list

# 使用示例
directory_path = '/path/to/your/directory'  # 请替换为你的目录
all_files = list_files_in_directory(directory_path)
print("所有文件名:")
for file in all_files:
    print(file)

代码解析

  • os.walk(directory):此函数生成文件夹中所有目录、子目录和文件的路径。
  • root:当前路径
  • dirs:当前路径下的目录列表
  • files:当前路径下的文件列表
  • os.path.join(root, file):拼接出完整文件路径

3. 使用 pathlib 库

从 Python 3.4 开始,pathlib 模块提供了一种更为现代化的方式来处理文件系统路径。下面是使用 pathlib 获取所有文件名的示例代码:

from pathlib import Path

def list_files_in_directory(directory):
    p = Path(directory)
    return [str(file) for file in p.rglob('*') if file.is_file()]

# 使用示例
directory_path = '/path/to/your/directory'  # 请替换为你的目录
all_files = list_files_in_directory(directory_path)
print("所有文件名:")
for file in all_files:
    print(file)

代码解析

  • Path(directory):创建一个路径对象。
  • rglob('*'):递归查找所有文件和文件夹。
  • file.is_file():用于过滤出文件,而不是目录。

4. 统计文件类型并利用饼状图可视化

为了更好地理解我们的文件,接下来我们可以统计不同类型文件的数量,并使用饼状图可视化这个数据。例如,我们可以统计后缀名的分布情况:

import matplotlib.pyplot as plt
from collections import Counter

def file_type_distribution(files):
    extensions = [file.split('.')[-1] for file in files if '.' in file]
    return Counter(extensions)

# 使用示例
file_distribution = file_type_distribution(all_files)
labels = list(file_distribution.keys())
sizes = list(file_distribution.values())

# 画饼状图
plt.figure(figsize=(8, 8))
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.
plt.title("文件类型分布")
plt.show()

代码解析

  • 使用 collections.Counter 来统计每种后缀的出现次数。
  • 使用 matplotlib.pyplot 来绘制饼状图。

饼状图示例

通过上述代码执行后,我们将得到一个如下的饼状图:

pie
    title 文件类型分布
    "PDF": 15
    "JPEG": 25
    "PNG": 30
    "DOCX": 10
    "TXT": 20

注:实际数据根据 all_files 变量中的文件改变。

5. 小结

通过本文的介绍,我们学习了如何使用 Python 来遍历文件夹及其子文件夹,并提取所有文件的名称。我们探讨了两种方法:使用 os 库和 pathlib 库。与此同时,我们还进行了文件类型的统计,并用饼状图进行了可视化。这些技术对于文件管理、数据分析、后台处理等多种场景都是十分有用的。

在学习和应用过程中,可以根据自己的需求扩展和修改代码,适应不同的项目需求。我们希望这篇文章能为您的 Python 学习之旅提供帮助。如果您有任何问题或建议,欢迎随时交流。