我有一个文件夹,里面有图片。我将每个图像的路径添加到列表中。它们没有按字母顺序排序。我做了这个函数来排序,但我发现排序后打印列表的结果是一样的。
import os
import glob
images_path = os.path.expanduser('~\\Desktop\\samples\\')
def img_path_list():
img_list = []
for file_path in glob.glob(str(images_path) + "*.jpg"):
img_list.append(file_path)
img_list.sort(key=lambda x: str(x.split('.')[0]))
return img_list
print(img_path_list())
结果仍然是:[Desktop\\t0.jpg, Desktop\\t1.jpg, Desktop\\t10.jpg, Desktop\\t11.jpg, Desktop\\t2.jpg, ...]
编辑:不是复制,只要我没有要求使用natsort
模块,而是使用简单的python。
发布于 2018-06-17 04:49:04
使用os.path.basename
并假定您的文件名都是X#.jpg
格式,其中X
是单个字符:
import os
img_list = ['Desktop\\t0.jpg', 'Desktop\\t1.jpg',
'Desktop\\t10.jpg', 'Desktop\\t11.jpg',
'Desktop\\t2.jpg']
img_list.sort(key=lambda x: int(os.path.basename(x).split('.')[0][1:]))
print(img_list)
['Desktop\\t0.jpg', 'Desktop\\t1.jpg',
'Desktop\\t2.jpg', 'Desktop\\t10.jpg',
'Desktop\\t11.jpg']
使用一个命名函数来说明lambda
是如何工作的:
def sorter(x):
return int(os.path.basename(x).split('.')[0][1:])
img_list.sort(key=sorter)
说明
这里有几个步骤:
通过os.path.basename
.
.
,并将结果保存到int
中进行数值排序。https://stackoverflow.com/questions/50891586
复制相似问题