У меня есть этот код для импорта изображений из папки, но изображения идут в следующем порядке:
test1.png
test10.png
test100.png
test101.png
test102.png
test103.png
test104.png
test105.png
test106.png
test107.png
test108.png
test109.png
test11.png
test110.png
test111.png
test112.png
test113.png
test114.png
test115.png
test116.png
test117.png
test118.png
test119.png
test12.png
etc...
Порядок, который я хочу, это test1
, test2
, test3
и т. д.
Как я могу этого добиться?
test_set = []
test_result=[]
test_dir= "C:/Users/anwer/Desktop/copy/test/"
for file in os.listdir(test_dir):
test_set.append((give_peak_sum(test_dir+file), file))
test_result.append((give_peak_sum(test_dir+file)))
print(file)
Используйте sortedList = sorted(test_result)
, чтобы отсортировать его позже. В противном случае проверьте glob
: stackoverflow.com/a/6774404/1501388
да, все они test<number>.png
Сначала вам нужно отсортировать список.
Если весь ваш файл начинается с «теста»
вы можете использовать
yourlist.sort(key=lambda x: int(x.split('.')[0][4:]))
где я могу использовать это в цикле?
@AnwarElhadad поменяй os.listdir(test_dir)
на sorted(os.listdir(test_dir), key=lambda x: int(x.split('.')[0][4:]))
Сортировать по целому числу в имени файла:
import os
def key(filename):
return int(os.path.splitext(filename)[0][4:])
files = os.listdir(test_dir)
sorted_filenames = sorted([filename for filename in files], key=key)
как мне реализовать это в моем цикле?
Замените os.listdir(test_dir)
на sorted_filenames
.
Все имена файлов формата
test<number>.png
?