@Atroshchenko-Dima
Python, postgres

Как переименовать файлы в папке удалив дату из середины имени?

Добрый день, в папке есть файлы имеющие названия такого типа "Станция Имя 09.2022 (ФРС-2)"
нужно чтоб код удалял в имени файла вот этот момент "09.2022" (месяц и год во всех файлах разные). Имеется такая заготовка, пробовал сделать через re.compile(r'\d\d.\d\d\d\d'), но что-то тоже не получилось

import os, time
folder = "C:\\Users\\Dima\\Desktop\\pgp"
search_for = "месяц.год"
replace_to = ""
time.sleep(2)

with os.scandir(path=folder) as it:
for entry in it:
if entry.is_file():
print(entry.name)
new_name = entry.name.\
replace(
search_for,
replace_to)
print(new_name)
os.system("ren ""
+ folder + entry.name +
"" "" + new_name +
""")

В коде не могу додумать именно момент чтоб находило данную часть и удаляло ее "09.2022", т.е если в search_for вставить 2022, а в replace_to 2023 то все файлы в папке поменяют год на 2023.

скобки могут не всегда стоять, после даты будет либо текст, либо текст в скобках
"Станция Имя 05.2022 ФГУ8"
" Станция Имя Имядва 05.2022 (ФМП-4)"
Вид во всех файлах такой, другого не будет
Т.е дата только одна, скобки в скобках быть не могут
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 2
LivingDictionary
@LivingDictionary
Любознательный, но бессистемный.
re.sub(pattern, replacement, string) ?
с паттерном \d{2}.\d{4}.
Ответ написан
Nivalis
@Nivalis
import re
import os


os.chdir("./test")
path = os.getcwd()

with os.scandir(path) as list_files:
    for f in list_files:
        new_file_name = re.sub(r"^(?P<start>[^0-9.]+)(?P<digits>[0-9.]+)\s(?P<ending>[^0-9]+)",
                               "\\g<start>\\g<ending>", f.name)
        os.rename(f, new_file_name)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы