今天用os.listdir()遍历文件夹下的图片发现,它的输出结果并不是按照某种特定顺序来的,这样输出就不是固定的。

os.listdir的结果就是一个list集,可以使用list的sort方法来排序。如果文件名中有数字,就用数字的排序。

import os
path=os.getcwd()  #返回当前进程的工作目录
path_list=os.listdir(path)
path_list.sort() #对读取的路径进行排序
print(path_list)

输出:
[‘1.jpg’, ‘10.jpg’, ‘11.jpg’, ‘12.py’, ‘2.jpg’, ‘3.jpg’, ‘4.jpg’, ‘5.jpg’, ‘6.jpg’, ‘7.jpg’, ‘8.jpg’, ‘9.jpg’]
12.py是程序文件。
sort()采取了按字符键值排序的手段,所以10.jpg排在了前面。

修改代码如下:

import os
path=os.getcwd()  #返回当前进程的工作目录
path_list=os.listdir(path)
path_list.sort(key=lambda x:int(x[:-4])) #将'.jpg'左边的字符转换成整数型进行排序
print(path_list)

输出:
[‘1.jpg’, ‘12.py’, ‘2.jpg’, ‘3.jpg’, ‘4.jpg’, ‘5.jpg’, ‘6.jpg’, ‘7.jpg’, ‘8.jpg’, ‘9.jpg’, ‘10.jpg’, ‘11.jpg’]
12.py是程序文件,int(x[:-4]),实际输出整数1。

针对不同的文件后缀可以使用另一种排序

import os
path=os.getcwd()  #返回当前进程的工作目录
path_list=os.listdir(path)
path_list.sort(key=lambda x:int(x.split('.')[0])) #对‘.’进行切片,并取列表的第一个值(左边的文件名)转化整数型
print(path_list)

输出:
[‘1.jpg’, ‘2.jpg’, ‘3.jpg’, ‘4.jpg’, ‘5.jpg’, ‘6.jpg’, ‘7.jpg’, ‘8.jpg’, ‘9.jpg’, ‘10.jpg’, ‘11.jpg’, ‘12.py’]
这样排序的文件就按照数字来排序。

参考

https://www.cnblogs.com/jins-note/p/9550388.html
https://blog.csdn.net/qq_41573001/article/details/108368942

【python】python中os.listdir的排序问题相关推荐

  1. Python中os.listdir的排序问题

    参考  Python中os.listdir的排序问题 - 云+社区 - 腾讯云 上周应别人要求,使用python批量修改文件名称. 文件名有规律,当时就用了一个函数直接精确的用文件名替换了.后来想直接 ...

  2. python中os.listdir用法

    python中os.listdir用法 一. 获取指定文件夹下的所有文件 import os path_name = 'E:\test\' # 输入要获取文件的根目录 for filename in ...

  3. python中os.listdir的用法

    os.listdir()方法用于返回指定文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序,不包括'.'和'-'即使其在文件夹中. path = 'www/var/http/' os.listd ...

  4. python中os.listdir()的使用和文件批量重命名方法

    作用 返回指定文件夹路径下的文件名称列表 用法 path_name = './image' #文件夹路径 files = os.listdir(path_name) #路径下的文件名称列表 博文已经迁 ...

  5. Python中os.listdir() 函数用法及实例

    listdir()语法格式:os.listdir(path) 描述:返回指定路径下的文件和文件夹列表. 实例: # 打开文件 path = "./TACOS/" dirs = os ...

  6. python中os.listdir( )函数读取文件夹

    问题:需要批量图片 且要求处理前和处理后的图片顺序相同 os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表,但有个很明显的缺点,它的默认顺序不是有序的或者说不是通常的顺序 ...

  7. python 文件操作 os.listdir() 遍历文件

    功能: 返回所给路径中所有文件(包含文件夹)的名称列表 doc: def listdir(*args, **kwargs): # real signature unknown""& ...

  8. 使用Python标准库函数os.listdir()时的4个注意事项

    好消息:"Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社, ...

  9. python macos listdir_Python os.listdir()用法及代码示例

    python中的os.listdir()方法用于获取指定目录中所有文件和目录的列表.如果我们未指定任何目录,则将返回当前工作目录中的文件和目录列表. 用法: os.listdir(path) 参数: ...

最新文章

  1. MySQL 5.5.35 单机多实例配置详解
  2. pdf怎么压缩大小?
  3. ubuntu nginx php7,ubuntu 16 安装php7+nginx
  4. python 调用c++库接口出错
  5. springMVC重复扫描bean导致声明式事务失效
  6. Mark Cuban投资组合中60%为BTC,30%为ETH
  7. Laravel 队列发送邮件
  8. HTML学习总结(1)——HTML基本介绍
  9. visual studio配置opencv
  10. Domino部署多台notes server
  11. 10个最佳QR码二维码和条形码Javascript库
  12. MOCTF-WRITE-UP(二)
  13. mysql空洞_Mysql 表空间和 数据页空洞
  14. 1072 开学寄语 C++实现
  15. php中column函数,PHP array_column() 函数用法及示例
  16. 分享几个不错的流程图制作网站
  17. TensorFlow Object Detection API 多GPU 卡平行计算,加速模型训练速度教学
  18. 《视觉SLAM十四讲》学习笔记:第5讲相机与图像
  19. pytorch 网络可视化(五):netron
  20. cesium--添加模型

热门文章

  1. Serverless无服务器介绍、原理及应用场景分析
  2. Python解决抓取内容乱码问题(decode和encode解码)
  3. 近距离看GPU计算(2)
  4. tinyint对应java什么类型
  5. NMS(Non-Maximum Suppression,非极大值抑制)解析
  6. 记 · 再看 · 前端社区氛围
  7. 国产M0核风机量产程序开发方案… FOC电机控制开发方案…3电阻采样
  8. 中国电信光猫路由模式端口映射问题记录
  9. cout和cerr的区别
  10. 将本地docker镜像推送到阿里云仓库