我有一些图片是从url中生成的,带有随机图片。然后,我尝试对它们进行排序以使其正常使用,但是它们的排序混乱了。赞赏任何建议或指出我的缺失
代码(生成图像列表):
def image_downloader():
image_url = 'url'
for count in tqdm(range(20)):
image_data = requests.get(image_url).content
with open(f'image_{count}.jpg', 'wb') as handler:
handler.write(image_data)
sleep(0.5)
然后进行排序(尝试通过生成的图片“ id”来获取它):
local_folder_content = os.listdir('.')
images_list = list((image for image in local_folder_content if image.endswith('.jpg')))
pprint((sorted(images_list, key=lambda x: x[:-4].split('_')[1])))
结果(排序混乱):
['image_0.jpg',
'image_1.jpg',
'image_10.jpg',
'image_11.jpg',
'image_12.jpg',
'image_13.jpg',
'image_14.jpg',
'image_15.jpg',
'image_16.jpg',
'image_17.jpg',
'image_18.jpg',
'image_19.jpg',
'image_2.jpg',
'image_3.jpg',
'image_4.jpg',
'image_5.jpg',
'image_6.jpg',
'image_7.jpg',
'image_8.jpg',
'image_9.jpg']
答案 0 :(得分:1)
您必须生成具有两位(或更多位)数字的所有文件名:
with open(f'image_{str(count).zfill(2)}.jpg', 'wb') as handler:
输出:
image_01.jpg
image_02.jpg
image_04.jpg
在这种情况下,您的图像将被正确排序。
答案 1 :(得分:1)
您可以尝试这样的事情:
images_list.sort(key= lambda i: int(i.lstrip('image_').rstrip('.jpg')))