Python 3.7: Пакетное переименование пронумерованных файлов в каталоге с сохранением их последовательности - PullRequest
0 голосов
/ 03 апреля 2019

Я относительно новичок в 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 Ответ

0 голосов
/ 02 мая 2019

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

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)

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

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