Начиная с версии 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
Мы можем выполнить нашу модификацию с помощью простой манипуляции со строками:
И теперь мы можем выполнить наше переименование, вызвав rename метод для созданного нами объекта path и добавив ext для завершения правильной структуры переименования, которую мы хотим:
p.rename(Path(p.parent, new_file_name + ext))
Подробнее, чтобы продемонстрировать его простоту:
Python 3.6+:
from pathlib import Path p = Path(some_path) p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))
Версии ниже Python 3.6 используют вместо этого метод string format:
from pathlib import Path p = Path(some_path) p.rename(Path(p.parent, "{}_{}_{}".format(p.stem, 1, p.suffix))
Ответ 4
import shutil
shutil.move('a.txt', 'b.kml')
Это сработает для переименования или перемещения файла.