Переименовать файл удалив все что идет после вхождения + само вхождение

Переименовать файл удалив все что идет после вхождения + само вхождение (Python)

(для примера) Есть файлы с названием типа:

19625361_12022-09-27-09-32-31.jpg

и

241849332022-09-27-09-34-59.jpg

Где

  • 19625361_1.jpg то что нужно получить и удалить дату и время 2022-09-27-09-32-31

  • 24184933.jpg то что нужно получить и удалить дату и время 2022-09-27-09-34-59

Уникальное вхождение у всех файлов это 2022-09-

Подскажите как это сделать ? Файлов огромное количество.


Ответы (1 шт):

Автор решения: passant
  1. Само переименование файлов в Python выполняется функцией rename() из библиотеки os.

  2. Выделение нужного фрагмента в строке, в которой находится имя файла можно делать по-разному, например через регулярные выражения. Но я бы использовал тот факт, что дата у вас всегда занимает 19 символов (включая тире). И расположены они всегда перед последней точкой (или если все файлы jpg - то непосредственно перед строкой .jpg). То есть удаляете последние 23 символа в строке, а к тому, что осталось добавляете .jpg

  3. Поскольку "Файлов огромное количество" то понятно, что описанные выше действия оформляете в виде цикла, который последовательно просматривает ваш каталог с файлами, на каждой итерации вытягивает очередное имя, делает описанное выше преобразования и переименовывает файл.

Вообще говоря, эта задача для второго урока по Python, как только выучили строки и начинают учить циклы. Так что надеюсь - справитесь дальше сами. Ну или в учебник все-таки загляните.

P.S. Дополнение в связи с тем, что ТС решил Python не учить, но задачу все равно делать.

Состояние директории до выполнения скрипта:

введите сюда описание изображения

Скрипт:

import os
dir = r"D:\Загрузка\s1" 
files = os.listdir(dir) 
for  file in files:  
    new_file = file[:-23] 
    os.rename(dir + '\\' + file, dir + '\\' + new_file + '.jpg')

Состояние директории после выполнения скрипта:

введите сюда описание изображения

→ Ссылка