Python文件名排序或文件排序问题

在读取文件夹里的文件时,有时需要顺序读取文件,那python如何顺序读取文件呢(这些都是楼主实际编程过程中遇到的问题,想把细节记录下来),下面会给出一些参考方式;

特此说明:在编辑本文的时候,楼主也参考了一些文献,如有侵权,联系楼主,本人立马删帖。

 

在python环境中提供两种排序方案(题主知道的):

  1. 用库函数sorted()对字符串排序,它的对象是字符

  2. 用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要进行处理(把文件后缀名‘屏蔽’)


     

(1)首先:我测试的文件夹是/img/,里面的文件都是图片,如下图所示

Python文件名排序或文件排序问题_第1张图片

(2)测试库函数sorted(),直接贴出代码:

import numpy as np
import os

img_path='./img/'

img_list=sorted(os.listdir(img_path))	#文件名按字母排序
img_nums=len(img_list)
for i in range(img_nums):
    img_name=img_path+img_list[i]
    print(img_name)

运行效果如下:

Python文件名排序或文件排序问题_第2张图片

从图片可以清晰的看出,文件名是按字符排序的

(3)测试函数sort(),代码:

import numpy as np
import os
img_path='./img/'

img_list=os.listdir(img_path)
img_list.sort()
img_list.sort(key = lambda x: int(x[:-4])) ##文件名按数字排序
img_nums=len(img_list)
for i in range(img_nums):
    img_name=img_path+img_list[i]
    print(img_name)

运行效果如下:

Python文件名排序或文件排序问题_第3张图片

可以看出,文件名是按数字排序的;顺便提下,sort函数中用到了匿名函数(key = lambda x:int(x[:-4])),其作用是将后缀名'.jpg'“屏蔽”(因为‘.jpg’是4个字符,所以[:-4]的含义是从文件名开始到倒数第四个字符为止),具体看python的匿名函数和数组取值方式

 

你可能感兴趣的:(python学习)