Изменить префикс имени файла в объекте Path PosixPath

#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