Вопрос-Ответ

How to rename a file using Python

Как переименовать файл с помощью Python

Я хочу изменить a.txt на b.kml.

Переведено автоматически
Ответ 1

Использовать os.rename:

import os

os.rename('a.txt', 'b.kml')

Использование:

os.rename('from.extension.whatever','to.another.extension')
Ответ 2

Файл может находиться внутри каталога, в этом случае укажите путь:

import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
Ответ 3

Начиная с версии 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

Мы можем выполнить нашу модификацию с помощью простой манипуляции со строками:

В Python 3.6 и выше используются f-строки!

new_file_name = f"{name_without_extension}_1"

В противном случае:

new_file_name = "{}_{}".format(name_without_extension, 1)

И теперь мы можем выполнить наше переименование, вызвав 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')

Это сработает для переименования или перемещения файла.

python