Узнайте, как использовать пакет Shutil для копирования файлов в Python.

 

Python широко используется в качестве инструмента автоматизации, и одной из основных задач автоматизации является копирование файлов из источника в место назначения.

Многие сочли бы библиотеку os синонимом таких задач, но удивительно, что os не поддерживает копирование или перемещение файлов.

В этой статье мы увидим, как мы можем использовать модуль Shutil , чтобы помочь нам перемещать файлы с одного пути на другой.

О shutil

Shutil входит в число встроенных модулей Python. Он обеспечивает доступ к некоторым высокоуровневым операциям, таким как смена владельца файлов, использование команд и операций, относящихся к файлам, таких как копирование, перемещение, архивирование и удаление.

Есть четыре способа копирования файлов в Shutil:

1.shutil.copy(src, dest)

Эта функция принимает два аргумента: путь к исходному файлу и путь назначения, оба должны быть строковым или байтовым объектом. Источником должно быть имя файла с путем, а местом назначения может быть путь к файлу или каталог. Если имя файла в источнике и месте назначения отличается, исходный файл будет скопирован в новый файл с указанным именем. Использование copy() сохраняет права доступа к файлу, но теряет его метаданные. Вот пример:

import shutil

shutil.copy("/Desktop/notes.txt", "/Documents/class_notes.txt") # file will be renamed
shutil.copy("/Desktop/notes.txt", "/Documents/") # file will be copied with same name

 

2.shutil.copyfile(src, dest)

copyfile() такой же, как  copy() и с несколькими отличиями. Путь назначения не может быть каталогом, это должен быть путь к новому файлу. Метаданные и разрешения не сохраняются.

import shutil

shutil.copyfile("/Desktop/notes.txt", "/Documents/class_notes.txt") # file will be renamed

 

3.shutil.copyfileobj(src_obj, dest_obj)

В случаях, когда требуется скопировать файловые объекты, можно использовать функцию copyfileobj() .  Здесь источник и место назначения являются файловыми объектами. Метаданные и разрешения не сохраняются. Давайте посмотрим на использование:

import shutil

src_obj = open("/Desktop/notes.txt", "r")
dest_obj = open("/Documents/notes.txt", "w") # file name can be different

shutil.copyfileobj(src_obj, dest_obj)

src_obj.close()
dest_obj.close()

 

4.shutil.copy2(src, dest)

copy2() идентичен, за  copy() исключением того, что  copy2() сохраняет метаданные.

import shutil

shutil.copy2("/Desktop/notes.txt", "/user/Documents/class_notes.txt")
shutil.copy2("/Desktop/notes.txt", "/user/Documents/")

 


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии