Переименуйте все файлы в папке с Python - PullRequest
0 голосов
/ 01 февраля 2020

Добрый день. У меня есть 500 фотографий (* .jpg) с плохими именами файлов. Я хочу переименовать все файлы в 01, 02 и так далее. Где я ошибся?

i = 0
path="D:/data"
for filename in os.listdir(path):
      my_dest ="0" + str(i) + ".jpg"
      my_source = path + filename
      # rename all the files
      os.rename(my_source, my_dest)
      i += 1

Ответы [ 3 ]

1 голос
/ 01 февраля 2020

path не заканчивается /, поэтому, например, если был файл с именем "example.jpg", my_source будет "D:/dataexample.jpg". Вместо этого вы должны использовать os.path.join.

Кроме того, my_dest = my_dest ничего не делает, и os.rename выдаст ошибку при указании полный путь к источнику и только имя файла для места назначения. Вы должны указать либо полный путь для обоих, либо только имя файла для обоих, если вы собираетесь переименовать файл, не перемещая его, и он находится в текущем рабочем каталоге.

Вам также следует заглянуть в enumerate и форматирование строки .

0 голосов
/ 01 февраля 2020

Ответ Harmon758 уже определил все ошибки и улучшения, которые вы можете сделать, поэтому я только собираю их все вместе. Вы должны:

  • Использовать os.path.join для создания имен файлов без заботы о конце / /,

  • Используйте перечисление вместо подсчета файлов с дополнительной переменной счетчика,

  • Используйте строковый формат для получения названий, которые вы описали, вместо все имена начинаются с нуля. В приведенном ниже коде он генерирует имена, заполненные нулями слева, длиной 3. Вы можете изменить это значение на желаемую длину (после '>').

    import os

    path="D:/data"
    for itr, filename in enumerate(os.listdir(path)):
        my_source = os.path.join(path, filename)
        my_dest = os.path.join(path, "{:0>3}.jpg".format(itr + 1))
        # Rename all the files
        os.rename(my_source, my_dest)
0 голосов
/ 01 февраля 2020

Вы можете использовать os.path.splitext , чтобы получить имя файла + расширение, и os.path.dirname , чтобы получить каталог имени файла. Это может помочь вам построить пункт назначения. Используйте os.path.join , чтобы объединить каталог и имя файла назначения

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