Как переместить файл с помощью модуля `shutil`?

Для перемещения файла с помощью модуля shutil используется функция shutil.move().

Пример:


import shutil

source = "путь/к/исходному/файлу.txt"
destination = "путь/к/новой/директории/файл.txt"

try:
    shutil.move(source, destination)
    print(f"Файл успешно перемещен из {source} в {destination}")
except FileNotFoundError:
    print(f"Файл {source} не найден.")
except Exception as e:
    print(f"Произошла ошибка при перемещении файла: {e}")

  

Функция перемещает файл из source в destination. Если destination - директория, то файл перемещается в эту директорию с тем же именем. Если destination - имя файла, то файл перемещается и переименовывается.


Для перемещения файла с помощью модуля shutil в Python используется функция shutil.move().

Синтаксис:

shutil.move(source, destination, copy_function=copy2)

Параметры:

  • source: Путь к файлу или директории, которую нужно переместить. Это строка.
  • destination: Путь, куда нужно переместить файл или директорию. Это тоже строка. Если destination существует и является директорией, то source будет перемещен внутрь этой директории. Если destination существует и является файлом, то операция перемещения может завершиться ошибкой в зависимости от операционной системы. Если destination не существует, то файл или директория source будет переименована в destination.
  • copy_function (необязательный): Функция, используемая для копирования файла, если source и destination находятся на разных файловых системах. По умолчанию используется shutil.copy2(), которая пытается сохранить метаданные файла.

Пример:


import shutil

# Перемещение файла в ту же директорию с переименованием
source_file = 'old_name.txt'
destination_file = 'new_name.txt'
shutil.move(source_file, destination_file)

# Перемещение файла в другую директорию
source_file = 'file_to_move.txt'
destination_directory = '/path/to/destination/directory'
shutil.move(source_file, destination_directory)

# Перемещение директории в другую директорию
source_directory = 'directory_to_move'
destination_directory = '/path/to/destination/directory'
shutil.move(source_directory, destination_directory)

print("Файл/директория успешно перемещены.")

Важные моменты:

  • Функция shutil.move() пытается переместить файл, используя операцию переименования (аналогично команде mv в Unix) если это возможно. Если source и destination находятся на разных файловых системах, то файл будет скопирован (с использованием copy_function) и затем удален из исходного местоположения.
  • Если во время перемещения возникнет ошибка (например, из-за отсутствия прав доступа), то может быть выброшено исключение OSError. Важно обрабатывать возможные исключения.
0