os.listdir 函数和 sort 函数的使用

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
参数:

  1. cmp:指定一个定制的比较函数,这个函数接收两个参数(files 中的元素),如果第一个参数小于第二个参数,返回一个负数;如果第一个参数等于第二个参数,返回零;如果第一个参数大于第二个参数,返回一个正数。比较什么由key决定,默认值为None
  2. key:指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None
  3. 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

一篇博客:Python 内置函数 Python builtins 模块

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值