Python os.listdir与os.walk实现获取路径详解

小岛来信
小岛来信
发布时间:2026-10-16| 6人浏览过
原创

本文详解Python中os.listdir与os.walk两个模块获取文件路径的方法。os.listdir适用于单层目录,直接列出文件;os.walk支持递归遍历,返回三元组(dirpath, dirnames, filenames),可处理包含子目录的复杂结构。通过示例代码展示如何拼接绝对路径,帮助开发者高效处理文件系统操作。

1. os.listdir

适用场景:当指定目录下仅包含文件,不存在子文件夹时,可以使用os.listdir方法。

示例:假设路径 d:\listdir 下包含三个文件(text1.txt、test2.txt、test3.txt),获取这些文件的绝对路径代码如下:

import os
path = r'd:\listdir'
for filename in os.listdir(path):
    #目录的路径和文件名拼接起来,得到了文件的绝路路径
    print(os.path.join(path,filename))

输出结果如下:

d:\listdir\test1.txt d:\listdir\test2.txt d:\listdir\test3.txt

2. os.walk

适用场景:涉及递归遍历的情况,即目录中既包含文件,也包含子文件夹(子文件夹内可能还有文件和子文件夹)。此时需使用os.walk读取所有文件。

示例:假设路径 d:\listdir 下包含三个文件(text1.txt、test2.txt、test3.txt)以及两个子文件夹filedir1和filedir2。其中filedir1包含文件text1_1.txt和text1_2.txt,filedir2包含文件test2_1.txt和test2_2.txt。遍历代码如下:

import os
path = r'd:\listdir'
for dirpath,dirnames,filenames in os.walk(path):
    print(dirpath,dirnames,filenames)

输出结果如下:

d:\listdir ['filedir1', 'filedir2'] ['test1.txt', 'test2 .txt'] d:\listdir\filedir1[] ['test1_1.txt', 'test1_2.txt'] d:\listdir\filedir2[] ['test2_1.txt','test2_2.txt']

说明:os.walk接收一个路径字符串作为输入,以生成器(yield)方式返回一个包含三个元素的元组:(dirpath, dirnames, filenames)。

dirpath表示当前遍历到的目录路径,类型为字符串。例如上述示例中的 d:\listdir、d:\listdir\filedir1、d:\listdir\filedir2。

dirnames列出当前目录路径下所有存在的子目录名称。例如在 d:\listdir 下有两个子目录:filedir1和filedir2。

filenames列出当前目录路径下所有文件的名称。例如在 d:\listdir 下有两个文件test1.txt和test2 .txt,则filenames将包含这两个文件名。

若需获取路径下所有文件的绝对路径,可结合os.path.join进行拼接:

import os
path = r'd:\listdir'
for dirpath,dirnames,filenames in os.walk(path):
    for filename in filenames:
        print(os.path.join(dirpath,filename))

输出结果如下:

d:\listdir\test1.txt d:\listdir\test2.txt d:\listdir\filedir1\test1_1.txt d:\listdir\filedir1\test1_2.txt d:\listdir\filedir2\test2_1.txt d:\listdir\filedir2\test2_2.txt

本文介绍了Python中os.listdir与os.walk获取文件路径的方法。如需了解更多相关内容,可搜索本站往期文章或继续浏览后续文章。感谢支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。