Имя файла не совпадает с файлами внутри папки - PullRequest
0 голосов
/ 02 июня 2018

Привет, у меня есть папка с именем '10k', которая содержит изображения с именами 1_left 1_right, как показано ниже.

enter image description here

Мой код Python длянапечатать имена файлов в папке:

main_file = '10k'
path = os.path.join(main_file,'*g')
files = glob.glob(path)


#l='10k\10_left.jpeg'
for f1 in files:
    #print(os.path.basename(f1))
    fstr=str(f1)
    print(fstr)

Вывод странный, когда я печатаю, не нужные имена Вывод: enter image description here

Пожалуйста, направьте меня.

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

@ vidit02100 , проблема действительно очень интересная.Как я понял из вашего кода, вы хотите печатать только имена файлов изображений, присутствующих в каталоге 10k .

В изображении вы не прокомментировали строки, которые вы прокомментировалив коде проблемы.

Если вы покажете полный код и расскажете о количестве изображений в каталоге 10k , мне было бы намного лучше помочь вам.

Может быть, ваш кодбудет распечатывать изображения в обратном порядке, если в 10k будет +10000 изображений.Пожалуйста, проверьте и дайте мне знать.

✓ Как я знаю, jpg , jpeg & png являются наиболее популярным графическим файломрасширения, оканчивающиеся на г .

✓ Поместите все эти расширения в один список и используйте другой цикл for, чтобы перебрать его и поместить в него свой код.

Пожалуйста, прокомментируйте, если мое предложение не удовлетворяет вашим требованиям.необходимость.Я обновлю свой ответ на основе предоставленных вами входов и выходов.

✓ Вот ваш измененный код.

main_file = '10k'
file_formats = ["png", "jpg", "jpeg"]

for file_format in file_formats:
    path = os.path.join(main_file, '*.' + file_format )
    files = glob.glob(path)

    for f1 in files:
        fstr = str(f1)
        print(fstr)
0 голосов
/ 02 июня 2018

Без дополнительной информации я могу только догадываться, что вы хотели, чтобы это напечатало.

Если желаемый вывод - сначала 1_лфт, затем 1_райт и т. Д., Как он представлен в вашей папке, причина в том, что pythonсортирует файлы не так, как ваша ОС.

Насколько я могу судить, files - это просто список.Таким образом, вы можете отсортировать его самостоятельно, используя sort и пользовательский ключ, например files.sort(key=lambda x: int(x.split("_")[0])).Это позволит отсортировать список по номеру в начале, а числа, отличные от строк, будут отсортированы так, как вы, вероятно, ожидаете (поэтому сначала 1, затем 2 и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...