python顺序读取文件夹中的图片方法_pycharm按原顺序读取文件夹图片-程序员宅基地

 https://blog.csdn.net/qq_22227123/article/details/79903116

  https://blog.csdn.net/merdy_xi/article/details/78409632

  涉及到文件操作,我们有时候会读取一个文件夹中的所有的文件。这些文件可能是文件名完全混乱的,也可能是完全格式化的(如1.png,2.png...)。下面介绍Python中的几种按顺序(假如有)读取文件夹中文件的方法。

  首先不得不说的是python中的os.listdir()方法。 os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。功能是不是一目了然?

  但是,os.listdir()返回的文件名不一定是顺序的,这就要求我们对返回的文件名列表进行排序:

  假设我们有一个这样的文件夹:

   我们利用os.listdir()方法写出如下代码:

1

2

3

4

5

6

import os

 

path = '/Users/apple/Desktop/OCR'

path_list = os.listdir(path)

path_list.remove('.DS_Store')    # macos中的文件管理文件,默认隐藏,这里可以忽略

print(path_list)

  输出结果如下:

  可见返回的文件名列表是一个奇怪的顺序。

  OK,既然os.listdir(path)返回的是文件名列表,那么列表不是可以排序吗,我只要用sort()方法,给列表中的文件名排个序不就好了?看看效果:

1

2

3

4

5

path = '/Users/apple/Desktop/OCR'

path_list = os.listdir(path)

path_list.remove('.DS_Store')    # 同上

path_list.sort()

print(path_list)

  输出结果如下:  

  可见,大致的顺序有了。但是糟糕的是10,11,12排到了2前面,这显然是因为sort()采取了按字符键值排序的手段。

  那么怎样解决这个问题呢?我们对代码稍作改变:

1

2

3

4

5

path = '/Users/apple/Desktop/OCR'

path_list = os.listdir(path)

path_list.remove('.DS_Store')

path_list.sort(key=lambda x:int(x[:-4]))

print(path_list)

  新加入的一行做的事情是--对每个文件名将句号前的字符串转化为数字,然后以数字为key来进行排序。这样便能够按照我们的心意来排序了。动手试试看看~~

  使用的时候发现了新问题:这个手段要求文件名高度格式化,假如一堆图片中夹杂了一张其他格式的呢?比如13.jpeg,这样的话上面的代码会读到句号,转化不成int而报错。这时候不妨试试下面的方法。

1

2

3

4

5

path = '/Users/apple/Desktop/OCR'

path_list = os.listdir(path)

path_list.remove('.DS_Store')

path_list.sort(key=lambda x:int(x.split('.')[0]))

print(path_list)

  这样写的话就只需考虑句号前面的数字顺序了,更有普适性。

  水到渠成,读取文件:

1

2

for filename in path_list:

    = open(os.path.join(path,filename),'rb')

  总结一下:想要按顺序读取文件夹中的文件,方法不是固定的,对于不同的文件名见招拆招才是上策。实在不行咱们还可以动用我们的大杀器:正则表达式,只需要我们有一个善于发现文件名特征的眼睛就难不倒我们啦。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gbz3300255/article/details/108238083

智能推荐

深度学习:卷积神经网络与图像识别基本概念_卷积神经网络 图像特征-程序员宅基地

文章浏览阅读2.4w次,点赞3次,收藏43次。一 卷积神经网络的组成图像分类可以认为是给定一副测试图片作为输入 IϵRW×H×CIϵRW×H×C,输出该图片 属于哪一类。参数 W 是图像的宽度,H 是高度,C 是通道的个数;彩色图像中 C = 3,灰度图像 中 C = 1。一般的会设定总共类别的个数,例如在ImageNet竞赛中总共有 1000 个类别;在CIFAR10 中有 10 个类别。卷积神经网络则可以看成这样的黑匣子。输入_卷积神经网络 图像特征

分立NMOS管高端驱动_nmos高端驱动-程序员宅基地

文章浏览阅读541次,点赞10次,收藏9次。NMOS高端自举驱动,使用开关对管Q1、Q2通过基极电压驱动控制电容C1自举,具有互锁能力。Q1、Q2选材极为方便,电路静态及动态工作点稳定。_nmos高端驱动

c# 大批量数据导出到excel (使用System.IO导出)_system.io.packaging 生成excel-程序员宅基地

文章浏览阅读6.1k次。预备知识:关于excelworkbook:工作簿,每一个xls或xlsx相当于一个工作簿。 sheet:工作表,每个工作簿可以有多个工作表。工作表相当于一张纸,工作簿相当于一个本子,将过个工作表集合在一起。 row:行 column:列 cell:单元格(表格中的最小单位,接下来导出表格就是对cell进行操作) 将DataTable中的大量数据导出到Excel表格中。但每张E..._system.io.packaging 生成excel

推荐 :利用Auto ARIMA构建高性能时间序列模型(附Python和R代码)-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏25次。作者:AISHWARYA SINGH;翻译:陈之炎;校对:丁楠雅本文共3400字,建议阅读10+分钟。本文介绍了ARIMA的概念,并带你用Python和R训练一个数据集实..._python中auto-arima

TCP三次握手与四次挥手_tcp的3次握手和4次挥手-程序员宅基地

文章浏览阅读1.4k次。Tcp三次握手与四次挥手,自己的见解_tcp的3次握手和4次挥手

自然语言处理核心期刊_中国中文信息学会-程序员宅基地

文章浏览阅读467次。全国第十六届计算语言学会议(CCL 2017)及第五届基于自然标注大数据的自然语言处理国际学术研讨会(NLP-NABD 2017)联合征稿启事2017-03-20“第十六届全国计算语言学学术会议”(The Sixteenth China National Conference on Computational Linguistics, CCL 2017)将于2017年10月13日—15日在南京师范..._ccl是中文核心吗

随便推点

.NetCore中间件的使用及原理分析-程序员宅基地

文章浏览阅读1.4k次。.NetCore中加入了中间件,简单记录下使用方法这里以一个记录访问的IP的值的中间件示例在StartUp中的Configure方法中进行配置方法A: app.Use(next => { return new RequestDelegate(async context => { var ip = context.Connectio

Android中轮播图的实现_安卓轮播图-程序员宅基地

文章浏览阅读502次。—————–纯粹图片的轮播图——————–导包 //banner广告轮播图 compile 'com.youth.banner:banner:1.4.9'布局中使用

北京口袋时尚科技公司-微店内推技术一面-程序员宅基地

文章浏览阅读185次。今天下午预约的面试,如期到来,回顾一下面试的过程.1.简单的自我介绍2.开始面试(看简历问),一面一般是压力面试,我简历上写的可以开发手机游戏(Cocos2d-x),他就问知道Dijkstra算法吗,面试时面试官说他电话有问题(确实信号不信),但面试官很nice,我一时没听清,就说不知道,以前写过单源最短路径的题。3.看了我研究过安全与劫持,他就问内核态和用户态的转化过程,感觉答的不是..._北京口袋时尚科技有限公司的微店

2020年末知识大总结:Java程序员转Android开发必读经验一份,嵌入式开发入门教程_软件开发转移动端开发需要学什么-程序员宅基地

文章浏览阅读815次。Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择。学安卓从事移动互联方向开发,学Java从事软件、网站开发。而安卓上的应用大多是Java编写的,所以建议在安卓前期的Java学习阶段中,要用心学好。言简意赅的说说“转”前的准备:其实Java程序员要自学安卓开发的基础知识还是没有什么难度的,毕竟语言相通,特性相似, 阅读安卓源代码的门槛以比较低一些,作为能够考虑“转”的合格的程序员的你,自学能力和相关的基础知识应该不是问题,学习安卓也相对比较轻松._软件开发转移动端开发需要学什么

Stm32CubeIDE设置补全快捷键和主题_cubeide快捷键设置-程序员宅基地

文章浏览阅读8.2k次,点赞8次,收藏32次。Stm32CubeIDE设置补全快捷键和主题stm32CubeIde的设置,省的自己忘记了。一、主题设置提示:这里可以添加要学的内容例如:1、 help->Eclipse Market->输入"Devstyle"查找主题插件->install安装2、窗口->首选项 找到主题3、按照如下设置完成后会提示重启,重启后效果如下所示二、补全设置用于设置代码的自动补全搜索: key->content assist默认的补全快捷键时alt+/,这里我改成双击两次_cubeide快捷键设置

【QBKbupt】洛谷P2525Uim的情人节礼物·其之壱-程序员宅基地

文章浏览阅读142次。(题目链接:https://www.luogu.com.cn/problem/P2525)#include<bits/stdc++.h>using namespace std;int main(){ int tmp,pos,s,n,number,symbol=1,input[10],data[10],memory[10]; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&input[i]);

推荐文章

热门文章

相关标签