Python获取文件夹下所有文件的三种常用方法:os.listdir、glob与os.walk

拾光
拾光
发布时间:2026-10-16| 3人浏览过
原创

本文详细介绍在Python中获取文件夹下所有文件的三种常用方法:os.listdir、glob模块以及os.walk。通过对比各方法的返回值特性、内存占用及递归能力,帮助开发者根据实际需求选择最优方案,适用于神经网络训练集读取等场景。

Python如何获取文件夹下的全部文件

在进行神经网络训练集准备时,通常需要从指定文件夹中读取所有图片文件。实践中主要有两种常见的处理路径。

1. 使用os.listdir()

os.listdir()函数用于列出指定文件夹中的所有文件名。随后,利用os.path.join()函数将文件夹路径与文件名拼接,从而生成完整的绝对路径。

import os
 
files=os.listdir('./T91_HR')
print(type(files))
print(files)
 
for i in files:
    path=os.path.join('./T91_HR/'+i)
    print(path)

2. 使用glob模块

glob是一种用于匹配符合特定模式文件集合的语言。

该模块返回所有匹配文件的路径列表。它仅接受一个参数pathname,用于定义文件路径的匹配规则,该路径既可以是绝对路径,也可以是相对路径。

glob.glob()函数

此函数返回一个包含所有匹配文件路径的列表。

from glob import glob
import os
path=os.path.join('./T91_HR/*.png')
files=glob(path)
print(type(files))
for i in files:
    print(i)

glob.iglob()函数

该函数与glob.glob()功能相似,同样只接受pathname参数。不同之处在于,它返回一个迭代器,每次仅返回一个路径。相比glob.glob(),这种方法能占用更少的内存空间。

from glob import iglob
import os
path=os.path.join('./T91_HR/*.png')
files=iglob(path)
print(type(files))
from glob import iglob
import os
path=os.path.join('./T91_HR/*.png')
files=iglob(path)
print(type(files))

自然排序处理

from natsort import natsorted
a = ['1.png', '3.png', '10.png', '2.png']
##常规排序
a.sort()
print(a)
##自然排序
b = natsorted(a)
print(b)

补充说明:Python获取文件夹下所有文件的其他方法

前言

在使用Python获取文件夹下的所有文件时,存在多种实现方式。

1. 使用os.listdir

  • os.listdir:该函数参数为文件夹路径,返回文件夹下的所有子文件夹及文件名称列表。

示例代码:

import os

path = 'D:\Workspace'
for file_name in os.listdir(path):
    print(file_name)

需要注意的是,此方法无法返回子文件夹内的文件,且仅返回名称而非完整路径。

2. 使用os.walk

  • os.walk:参数为文件夹路径,返回三个内容:绝对路径、子文件夹列表、文件名列表。此方法可以遍历文件夹下的所有文件、子文件夹及其内部的所有文件。

例如: D:/workspace/folder/text1.txt D:/workspace/folder/text2.txt 当输入的path为D:/workspace时,第一次遍历会获取/workspace下的所有文件和文件夹;第二次遍历会获取/workspace/folder下的所有文件和文件夹。因此需要对结果进行循环处理,以获取所有文件。

示例代码:

import os

path = 'D:\Workspace'
for root, dirs, files in os.walk(path):
    print(root)
    print(dirs)
    print(files)

返回结果:

D:\Workspace
['folder']
[]
D:\Workspace\folder
[]
['text1.txt', 'text2.txt']

3. 使用glob.glob

glob:参数为路径以及文件过滤条件,若不设置过滤需填写为*,此函数会返回包括路径的文件夹和文件名。

示例代码:

import glob
path = 'D:\Workspace\folder\*'
for file_abs in glob.glob(path):
    print(file_abs)

返回结果:

D:\Workspace\folder\text1.txt
D:\Workspace\folder\text2.txt

注意,此方法不能返回子文件夹下的文件,但返回的文件名包含绝对路径。

至此,关于Python如何获取文件夹中全部文件的介绍已结束,更多相关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 算法库。