os.listdir()
:返回指定的文件夹包含的文件或文件夹的名字的列表
要保证输入为绝对路径
注意:尽量避免将自定义路径名写为 path,因为在 os
包中有一个 path
模块,容易产生混淆。
用于遍历某个文件夹下的所有对象,例如:
import os
root_dir = "D:/My Project/ps2.0/training_my/"
for obj in os.listdir(root_dir):
print(obj)
输出:
20160725-3-1.jpg
20160725-3-14.jpg
20160725-3-23.jpg
p2_img116_0000.jpg
p2_img119_0348.jpg
p2_img119_0408.jpg
文本文档.txt
如果你只是想调用该文件夹下的所有 .jpg
文件,那么可以这样写:
for obj in os.listdir(root_dir):
if obj[-3:] in ('jpg'):
print(obj)
输出
20160725-3-1.jpg
20160725-3-14.jpg
20160725-3-23.jpg
p2_img116_0000.jpg
p2_img119_0348.jpg
p2_img119_0408.jpg
另外还有两个命令:
os.path.isdir()
判断对象是否为一个目录
os.path.isfile()
判断对象是否为一个文件
os.listdir
函数默认排序经常会出现乱序,在将大批量图片转化为视频等项目中会造成麻烦,所以要保证图像有序输入,可以使用 .sort
函数:
import os
dirpath = "./frame"
files = os.listdir(dirpath)
print("files:", files)
files.sort(key=lambda x: int(x[:-4]))
for file in files:
print("file:", file)
输出:
files: ['0.jpg', '1.jpg', '10.jpg', '100.jpg', '1000.jpg', '1001.jpg',...]
file: 0.jpg
file: 1.jpg
file: 2.jpg
file: 3.jpg
...
sort
函数:
files.sort(cmp=None, key=None, reverse=False) #python 2.x
files.sort(key=None, reverse=False) #python 3.x
参数:
cmp
:指定一个定制的比较函数,这个函数接收两个参数(files 中的元素),如果第一个参数小于第二个参数,返回一个负数;如果第一个参数等于第二个参数,返回零;如果第一个参数大于第二个参数,返回一个正数。比较什么由key
决定,默认值为None
。key
:指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None
。reverse
:是一个布尔值。如果设置为True
,列表元素将被倒序排列。
lambda
只是一个表达式,函数体比def
简单很多。
lambda
的主体是一个表达式,而不是一个代码块。仅仅能在lambda
表达式中封装有限的逻辑进去。
lambda
表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。
fun1 = lambda x, y, z: x + y + x
fun2 = lambda x, y, z: x + y + z
print("fun1=", fun1(1, 2, 3), "fun2=", fun2(1, 2, 3))
输出:
fun1= 4 fun2= 6