Python 3.7: пакетное переименование пронумерованных файлов в каталоге с сохранением их последовательности

#python-3.x #batch-rename

#python-3.x #пакетное переименование

Вопрос:

Я относительно новичок в Python и только недавно начал пытаться использовать его для анализа данных. У меня есть список файлов изображений в каталоге, которые были получены последовательно, и они были названы так:

 IMG_E5.1.tif
IMG_E5.2.tif
IMG_E5.3.tif
...
...
IMG_E5.107.tif
  

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

 IMG_E5_0001.tif
IMG_E5_0002.tif
IMG_E5_0003.tif
...
...
IMG_E5_0107.tif
  

Не могли бы вы посоветовать мне, как это можно сделать, или, если уже есть ответ, о котором я не знаю, свяжите меня с ним? Большое спасибо!

Ответ №1:

Мне удалось найти метод, который работает для этого

 import os
import os.path as path
from glob import glob

# Get current working directory
file_path = os.getcwd()

file_list = []
for i in range(1, 500):
    # Generate file name (with wildcards) to search for
    file_name = path.abspath(file_path   "/IMG*"   "."   str(i)   ".tif")
    # Search for files
    file = glob(file_name)
    # If found, append to list
    if len(file) > 1:
        file_list.append(file[0])
    elif len(file) == 1:
        file_list.append(file[0])

for file in file_list:
    # Use the "split" function to split the string at the periods
    file_name, file_num, file_ext = file.split(".")
    file_new = path.abspath(file_name   "_"
                             str(file_num).zfill(4)
                             "."   file_ext) 
    os.rename(file, file_new)
  

Я все еще относительно неопытен в кодировании, поэтому, если есть более простой и эффективный способ решения этой проблемы, дайте мне знать. Спасибо.