#python #regex #string #path
#python #регулярное выражение #строка #путь
Вопрос:
Мне нужно изменить префикс для текущего файла.
Пример будет выглядеть следующим образом:
from pathlib import Path
file = Path('/Users/my_name/PYTHON/Playing_Around/testing_lm.py')
# Current file with destination
print(file)
# Prefix to be used
file_prexif = 'A'
# Hardcoding wanted results.
Path('/Users/my_name/PYTHON/Playing_Around/A_testing_lm.py')
Как видно, жесткое кодирование легко. Однако есть ли способ автоматизировать этот шаг?
Существует псевдо-идея того, что я хочу сделать:
str(file).split('/')[-1] = str(file_prexif) str('_') str(file).split('/')[-1]
Я хочу изменить только последний элемент PosixPath
файла. Однако невозможно изменить только последний элемент строки
Ответ №1:
file.stem
обращается к базовому имени файла без расширения.
file.with_stem()
(добавлено в Python 3.9) возвращает обновленный Path
с новым stem:
from pathlib import Path
file = Path('/Users/my_name/PYTHON/Playing_Around/testing_lm.py')
print(file.with_stem(f'A_{file.stem}'))
Usersmy_namePYTHONPlaying_AroundA_testing_lm.py
Ответ №2:
Используйте file.parent, чтобы получить родительский элемент пути и file.name чтобы получить конечный компонент path, исключая диск и корень.
from pathlib import Path
file = Path('/Users/my_name/PYTHON/Playing_Around/testing_lm.py')
file_prexif_lst = ['A','B','C']
for prefix in file_prexif_lst:
p = file.parent.joinpath(f'{prefix}_{file.name}')
print(p)
/Users/my_name/PYTHON/Playing_Around/A_testing_lm.py
/Users/my_name/PYTHON/Playing_Around/B_testing_lm.py
/Users/my_name/PYTHON/Playing_Around/C_testing_lm.py