#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)
Я все еще относительно неопытен в кодировании, поэтому, если есть более простой и эффективный способ решения этой проблемы, дайте мне знать. Спасибо.