Начиная с Python 3.4 для решения этой проблемы можно использовать модуль pathlib .
Если вы используете более старую версию, вы можете использовать найденную версию с бэкпортом здесь
Давайте предположим, что вы не находитесь в корневом пути (просто чтобы добавить к нему немного сложности), вы хотите переименовать и должны предоставить полный путь, мы можем посмотреть на это:
some_path = 'a/b/c/the_file.extension'
Итак, вы можете взять свой путь и создать из него Path
объект:
from pathlib import Path
p = Path(some_path)
Просто, чтобы предоставить некоторую информацию об этом объекте, который у нас есть сейчас, мы можем извлечь из него вещи. Например, если по какой-либо причине мы хотим переименовать файл, изменив имя файла с the_file
на the_file_1
, то мы можем получить часть имени файла:
name_without_extension = p.stem
И еще держите удлинитель в руке:
ext = p.suffix
Мы можем выполнить нашу модификацию с помощью простой манипуляции со строками:
new_file_name = "{}_{}".format(name_without_extension, 1)
И теперь мы можем выполнить наше переименование, вызвав метод rename
для созданного нами объекта пути и добавив ext
, чтобы завершить правильную структуру переименования, которую мы хотим:
p.rename(Path(p.parent, new_file_name + ext))
Короче, чтобы продемонстрировать свою простоту:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}".format(p.stem, 1) + p.suffix))