Язык программирования Python

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

Если вам нужно скопировать файл с помощью Python, но вы не знаете, как это сделать, вы попали по адресу.

Когда вы хотите скопировать файл, у вас может быть несколько сценариев: копирование только содержимого, использование конечного каталога в качестве параметра, копирование метаданных и так далее. Именно поэтому Python предлагает различные альтернативы при копировании файла. Здесь мы рассмотрим наиболее распространенные из них, использующие модуль shutil.

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

copy – это основная функция, которую следует использовать, если вы хотите скопировать файл в Python.

Я уже говорил, он определяется внутри модуля shutil.

Главная особенность этой функции заключается в том, что она копирует содержимое файла и его разрешения, но не копирует другие метаданные, такие как оригинальные даты создания и модификации.

Как именно это работает?

Данная функция позволяет задать следующие параметры:

  • src: Полный путь или имя исходного файла. Это может быть строка или объект PathLike.
  • dst: Путь к файлу назначения. Если путь является каталогом, исходный файл будет скопирован в каталог, принимая в качестве имени имя исходного файла.
  • follow_symlinks (по умолчанию, True): Если follow_symlinks равно false и src является символической ссылкой, dst будет создан как символическая ссылка. Если параметр follow_symlinks равен true и src является символической ссылкой, dst будет копией файла, на который ссылается src.

Давайте рассмотрим некоторые примеры использования:

import shutil shutil.copy('original_file.txt', 'copy_file.txt') shutil.copy('/dir/original_file.txt', '/dir/copy/copy_file.txt') shutil.copy('/dir/original_file.txt', '/dir/copy')
Code language: JavaScript (javascript)

Копирование метаданных с помощью copy2

Если вам дополнительно нужно скопировать метаданные файла, вы можете использовать функцию copy2. Эта функция ведет себя точно так же, как функция копирования в предыдущем разделе, за исключением того, что она также сохраняет метаданные из исходного файла в целевом файле.

import shutil shutil.copy2('original_file.txt', 'copy_file.txt') shutil.copy2('/dir/original_file.txt', '/dir/copy/copy_file.txt') shutil.copy2('/dir/original_file.txt', '/dir/copy')
Code language: JavaScript (javascript)

Копировать только содержимое файла

Если вам нужно скопировать только содержимое файла, вы можете использовать функцию copyfile(src, dst, follow_symlinks=True). Эта функция создает копию исходного файла src в целевой файл dst.

src и dst – это строки с полными путями к исходному и целевому файлам, соответственно. Кроме того, если целевой файл уже существует, он будет заменен.

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

import shutil shutil.copyfile('original_file', 'copy_file.txt') shutil.copyfile('/dir/original_file.txt', '/dir/copy/copy_file.txt')
Code language: JavaScript (javascript)

Копирование содержимого файла с помощью объектов файла

Последняя функция, которую мы рассмотрим – copyfileobj. Эта функция похожа на предыдущую, только src и dst должны быть объектами файлов (а не строками с путями источника/назначения).

import shutil file_src = 'source.txt' f_src = open(file_src, 'rb') file_dest = 'destination.txt' f_dest = open(file_dest, 'wb') shutil.copyfileobj(f_src, f_dest)
Code language: JavaScript (javascript)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *