os.listdir не обращается к файлам с цифровыми обозначениями в порядке возрастания [дубликат]
Мы хотим, чтобы файлы png были доступны как 15.png,45.png,75.png и так далее. Это код и результат, который мы получаем
import os
keypts_labels=[]
class_list=os.listdir('dataset')
for name in class_list:
for image in os.listdir(f"dataset/{name}"):
for item in os.listdir(f"dataset/{name}/{image}"):
print(os.path.abspath(f"dataset/{name}/{image}/{item}"))
1 ответ
Вам не нужно обрабатывать всю эту повторяющуюся логику, когда есть простые способы сделать это. См. подход ниже
def list_files(from_folder):
from glob import glob
import pathlib
# Use glob to get all files in the folder, based on the type
png_files = glob(f"{from_folder}/**/*.png", recursive=True)
# Use a numerical sort, using the file name prefix as the key
png_files = sorted(png_files, key=lambda path: int(pathlib.Path(path).stem))
print(png_files) #return it if you want
list_files("dataset")
Эта часть функции фактически перечислит то, что вам нужно. Это предполагает, что все png-файлы имеют имя допустимого числа, и вы ищете только png-файлы.
Надеюсь, логика понятна из самих комментариев.