Python获取指定文件夹下文件名的两种方法:os.walk与os.listdir

Elena
Elena
发布时间:2026-10-13| 2人浏览过
原创

本文详细介绍Python中获取指定文件夹下文件名的两种常用方法:os.walk()与os.listdir()。os.walk()可递归遍历所有子目录并返回三元组,适合全量获取;os.listdir()仅返回当前层级文件名,需配合递归处理子目录。文中提供了筛选特定扩展名(如.jpeg)的代码示例及注意事项,帮助开发者高效处理文件路径。

本文介绍如何利用Python的os模块,通过os.walk()和os.listdir()两种函数来获取指定文件夹下的文件名。

一、使用os.walk()方法

os模块中的walk()函数支持对文件夹及其子目录进行递归遍历,从而获取所有文件。

os.walk(top, topdown=Ture, onerror=None, followlinks=False) 

调用该函数会返回一个包含三个元素的元组:(dirpath, dirnames, filenames)。

各参数的具体含义如下:

  1. dirpath:字符串类型,表示当前正在遍历的目录路径;
  2. dirnames:列表类型,包含当前dirpath路径下所有子目录的名称(不含完整路径);
  3. filenames:列表类型,包含当前dirpath路径下所有非目录文件(即子文件)的名称(不含完整路径)。

需要注意的是,dirnames和filenames中存储的均不包含路径信息。若需获取完整文件路径,可结合使用os.path.join(dirpath, filename)。

以下是相关代码示例:

# -*- coding: utf-8 -*-  
import os 
def file_name(file_dir):  
  for root, dirs, files in os.walk(file_dir): 
    print(root) #当前目录路径 
    print(dirs) #当前路径下所有子目录 
    print(files) #当前路径下所有非目录子文件 

若需筛选特定类型的文件,可参考以下代码逻辑:

# -*- coding: utf-8 -*-   
import os 
 
def file_name(file_dir):  
  L=[]  
  for root, dirs, files in os.walk(file_dir): 
    for file in files: 
      if os.path.splitext(file)[1] == '.jpeg': 
        L.append(os.path.join(root, file)) 
  return L 

代码中使用了os.path.splitext()函数,该函数用于将路径拆分为文件名和扩展名两部分。例如,对“E:/lena.jpg”执行该函数,将返回“E:/lena”和“.jpg”。

二、使用os.listdir()方法

os.listdir()函数仅返回当前指定路径下的文件名,不包含子目录中的文件。因此,若要获取所有层级的文件名,必须采用递归调用的方式。

直接提供实现代码,该函数用于返回类型为‘.jpeg’的文件名列表:

# -*- coding: utf-8 -*- 
import os 
 
def listdir(path, list_name): 
  for file in os.listdir(path): 
    file_path = os.path.join(path, file) 
    if os.path.isdir(file_path): 
      listdir(file_path, list_name) 
    elif os.path.splitext(file_path)[1]=='.jpeg': 
      list_name.append(file_path) 

作为Python初学者,在编写代码时容易遇到一些基础问题,导致耗时较多。首先,务必确保代码遵循严格的四空格缩进规范,直接按回车换行并不会自动产生四空格缩进;其次,在Windows命令提示符中使用Python解释器时,若修改源代码后再次运行,需先退出当前解释器并重新进入,否则系统仍会执行第一次运行过的代码缓存。

以上就是本文的全部内容,希望对各位的学习有所帮助,也欢迎大家继续支持本站。

相关标签:

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

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 算法库。