Python遍历子目录文件的多种方法

实现目标,我们需要使用Python遍历当前目录及子目录下所有文件并打印出文件名,或者将其存为列表。这里提供五种方法实现此目标。首先,使用Pathlib库的Path.rglob()方法是最快速的选择。这可以高效地调用子目录中的文件,代码示例如下:python from pathlib import Path for file in Path('.').rglob('*...
Python遍历子目录文件的多种方法
实现目标,我们需要使用Python遍历当前目录及子目录下所有文件并打印出文件名,或者将其存为列表。这里提供五种方法实现此目标。

首先,使用Pathlib库的Path.rglob()方法是最快速的选择。这可以高效地调用子目录中的文件,代码示例如下:

python
from pathlib import Path
for file in Path('.').rglob('*'):
print(file)

其次,os.walk()方法提供简单而直观的遍历结构。此方法能递归地返回目录树的文件名列表,具体代码如下:

python
import os
for root, dirs, files in os.walk('.'):
for file in files:
print(os.path.join(root, file))

另外,递归循环法通过函数自身调用实现遍历。此方法易于理解,但代码量较大。例如:

python
def recurse(dir_path):
for file in os.listdir(dir_path):
file_path = os.path.join(dir_path, file)
if os.path.isfile(file_path):
print(file_path)
else:
recurse(file_path)

recurse('.')

生成器方法利用其特性,更快速且方便地打印所有文件。下面的代码展示了此方法的应用:

python
def files_in_dir(dir_path):
for root, _, files in os.walk(dir_path):
for file in files:
yield os.path.join(root, file)

for file in files_in_dir('.'):
print(file)

此外,scandir方法能通过提供文件的相对目录来遍历目录树,从而为后续的文件操作提供便利。这种方法相较于os.walk()更高效。具体使用如下:

python
import scandir
for entry in scandir.scandir('.'):
if entry.is_file():
print(entry.path)

通过以上方法的比较与应用,我们可以根据实际情况选择最合适的方案来实现目标。学习这些方法后,我们可以反思每种方法的优缺点,以及在不同场景下的适用性,从而提升编程技能。2024-10-24
mengvlog 阅读 72 次 更新于 2025-10-29 08:24:15 我来答关注问题0
檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部