Как переименовать файлы в папке удалив дату из середины имени?
Добрый день, в папке есть файлы имеющие названия такого типа "Станция Имя 09.2022 (ФРС-2)"
нужно чтоб код удалял в имени файла вот этот момент "09.2022" (месяц и год во всех файлах разные). Имеется такая заготовка, пробовал сделать через re.compile(r'\d\d.\d\d\d\d'), но что-то тоже не получилось
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)"
Вид во всех файлах такой, другого не будет
Т.е дата только одна, скобки в скобках быть не могут
Можно больше примеров? Что там может после даты вообще стоять? Всегда ли есть скобочки после? Могут ли а скобках быть другие скобки? Может ли там быть еще дата?
Wataru, скобки могут не всегда стоять, после даты будет либо текст, либо текст в скобках
"Станция Имя 05.2022 ФГУ8"
" Станция Имя Имядва 05.2022 (ФМП-4)"
Вид во всех файлах такой, другого не будет
Т.е дата только одна, скобки в скобках быть не могут
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)
Atroshchenko-Dima, паттерн "^(?P[^0-9.]+)(?P[0-9.]+)\s(?P[^0-9.]+)", не отрабатывает до конца.
в конце надо (?P.*) вместо (?P[^0-9.]+)
Проверьте. https://regex101.com