Переименовать несколько файлов с другим расширением с одинаковыми именами в пошаговом порядке - PullRequest
1 голос
/ 06 ноября 2019

У меня есть несколько папок, в которых у меня есть файлы, названные следующим образом:

   1500001.jpg
   1500001.xml
   1600002.jpg
   1600002.xml
   9876543.jpg
   9876543.xml

Как вы можете видеть, у меня есть один файл jpg и соответствующий ему файл xml с тем же именем. Я хочу переименовать все эти файлы следующим образом:

   ID_0001.jpg (1500001.jpg converted to ID_0001.jpg)
   ID_0001.xml (1500001.xml converted to ID_0001.xml)
   ID_0002.jpg (1600002.jpg converted to ID_0002.jpg)
   ID_0002.xml (1600002.xml converted to ID_0002.xml
   ID_0003.jpg (9876543.jpg converted to ID_0003.jpg)
   ID_0003.xml (9876543.xml converted to ID_0003.xml)

Я новичок в Python и написал некоторый код для переименования файлов с другим расширением, но не могу масштабировать его, чтобы сохранить то же имя файла для соответствующего файлав инкрементном порядке, например ID_0001.jpg, ID_0001.xml и т. д.

import os
_src = "path/to/directory"
_ext_jpg = ".jpg"
_ext_xml = ".xml"

for i,filename in enumerate(os.listdir(_src)):
    if filename.endswith(_ext_jpg):
        os.rename(filename, _src+'ID_' + str(i)+_ext_jpg)

    else:
        os.rename(filename, _src+'ID_' + str(i)+_ext_xml)

. С этим кодом приращение происходит для всех файлов, таких как ID_0001.jpg, ID_002.xml, ID_003.jpg, ID_004. .xml и на самом деле это должно быть похоже на ID_0001.jpg, ID_0001.xml, ID_0002.jpg, ID_0002.xml и т. д.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Использование glob

Пример:

import os
import glob
_src = "path/to/directory"

for i,filename in enumerate(glob.glob("{}*.jpg".format(_src))):
    file = os.path.basename(filename)
    f, ext = os.path.splitext(file)
    os.rename(filename, os.path.join(_src, 'ID_' + str(i)+ext))   #Rename .jpg
    os.rename(os.path.join(_src, "{}.xml".format(f) , os.path.join(_src, 'ID_' + str(i)+".xml"))  #Rename .xml
0 голосов
/ 06 ноября 2019

Когда вы получите имя файла, переименуйте оба файла xml и jpg:

import os
_src = "path/to/directory"
_ext_jpg = ".jpg"
_ext_xml = ".xml"

for i,filename in enumerate(os.listdir(_src)):
    if filename.endswith(_ext_jpg):
        os.rename(filename, _src+'ID_' + str(i)+_ext_jpg)
        os.rename(filename[:-4]+_ext_xml, _src+'ID_' + str(i)+_ext_xml)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...