Python获取文件夹下所有文件的三种常用方法:os.listdir、glob与os.walk
本文详细介绍在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获取文件夹文件内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













