Сообщить об ошибке.

Функция rename() модуля os в Python

Переименовать файл или пустой каталог

Синтаксис:

import os

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

Параметры:

  • src - str, исходное имя файла или каталога,
  • dst - str, новое имя файла или каталога,
  • src_dir_fd=None - int, исходный дескриптор каталога,
  • dst_dir_fd=None - int, новый дескриптор каталога,

Возвращаемое значение:

  • None

Описание:

Функция rename() модуля os переименовывает файл или каталог с именем src в dst. Если имя dst уже существует, то операция os.rename(), в ряде случаев, может завершится с подклассом исключения OSError.

В Windows, если dst уже существует, всегда возникает ошибка FileExistsError.

В Unix, если src - это файл, а dst - это каталог или наоборот, то поднимаются исключения IsADirectoryError или NotADirectoryError соответственно.

Если оба являются каталогами и dst пуст, то dst будет заменен без уведомления.Если dst является непустым каталогом, возникает OSError.Если оба являются файлами, то dst будет заменен без уведомления, если у пользователя есть разрешение.

Операция может завершиться с ошибкой на некоторых разновидностях Unix, если src и dst находятся на разных файловых системах. В случае успеха, переименование будет атомарной операцией, это требование POSIX.

Аргументы src и dst могут принимать объекты, представляющие путь файловой системы, такие как pathlib.PurePath.

Функция os.rename() может поддерживать указание src_dir_fd и/или dst_dir_fd для предоставления путей относительно дескриптора каталога.

Если необходимо кросс-платформенное переименование, то используйте функцию os.replace().

Примеры использования:

>>> import os
>>> scr_dir, dst_dir = 'test_dir', 'rename_dir'
>>> os.mkdir(scr_dir, 0o774)
# переименовывание
>>> os.rename(scr_dir, dst_dir)
>>> os.path.isdir(dst_dir)
# True
>>> os.rmdir(dst_dir)

>>> scr_f, dst_f = 'test_file.txt', 'rename_file.txt'
# создадим файл
>>> fp = open(scr_f, 'w')
>>> fp.write('data string')
>>> fp.close()
# переименовывание
>>> os.rename(scr_f, dst_f)
>>> os.path.isfile(dst_f)
# True
>>> os.unlink(dst_f)