Соглашение о присвоении имен переменным файлам - PullRequest
0 голосов
/ 15 мая 2018

Heyo! Я пытаюсь изменить имена файлов всех изображений в папке на новую схему именования, чтобы программа, которую я использую, могла ее распознать. текущая схема именования 'cam1 _ ###. png', где ### - это номер в последовательности. Например, первая фотография называется «cam1_000.png».

Я пытаюсь найти следующую схему именования: «cam1_r ### _ #### _ rgb.png», где «r ###» и «####» увеличиваются на единицу каждый раз , Например, первое изображение в папке «cam1_000.png» будет переименовано в «cam1_r000_0000_rgb.png», а сотая фотография будет переименована из «cam1_099.png» в «cam1_r099_0099_rgb.png»

Я чувствую, что это должно быть очень легко, но у меня проблемы с форматированием: / вот что у меня сейчас есть:

files = os.listdir(".")
i = 1
for file in files:
   os.rename(file, file + 'r_'+i+'_'+i+'.png')
   i = i+1

Заранее спасибо за любой совет / перенаправление!

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

Вы можете попытаться использовать str.format, чтобы облегчить определение выходного имени файла. Вы также можете использовать str.zfill для обеспечения необходимого заполнения нулями.

Кроме того, вы должны использовать enumerate для счетчика.

Наконец, полезно отделить имя и расширение от имени вашего файла, используя os.path.splitext.

for i, file in enumerate(sorted(files), 1):
    name, ext = os.path.splitext(file)
    os.rename(file, '{0}_r{1}_{2}.{3}'.format(name.split('_')[0], str(i).zfill(3),
                                              str(i).zfill(4), ext))
0 голосов
/ 15 мая 2018

Я тупой, так вот что я получил ... надеюсь, это поможет всем, кто пытается это сделать: D

files = os.listdir(".")
i = 0
for file in files:
  alpha="%03d" % i
  beta="%04d" % i
  os.rename(file, 'cam1_r'+alpha+'_'+beta+'_rgb'+'.png')
  i = i+1
0 голосов
/ 15 мая 2018

Я бы предложил использовать здесь строку формата .Вы создаете строку, представляющую шаблон, который вы хотите использовать, а затем вызываете метод format() для этой строки со значениями, которые вы хотите заменить в качестве аргументов.

В этом случае, я думаю, выможет использовать

"{0}r_{1:03d}_{1:04d}.{2}".format(base_filename, i, extension)

В коде формата {1:03d}, 1 сообщает ему, какой аргумент format() использовать (с нулевым индексом, поэтому 1 означает второй аргумент, i), а часть после двоеточия сообщает, как форматировать этот аргумент: 0 означает включение начальных нулей, 3 означает заполнение трех символов, а d означает форматирование его как целое число.

Обратите внимание, что сначала вам нужно разделить имя файла на основание (например, cam1_000) и расширение (png).

...