Автор оригинала: Pankaj Kumar.
Эй! В этом уроке мы узнаем о функциях, присутствующих в модуле shutil Python. Итак, давайте начнем.
Модуль shutil Python предоставляет нам ряд высокоуровневых операций с файлами. Мы можем копировать и удалять файлы и каталоги. Давайте начнем с модуля и подробно изучим практическую реализацию каждого из файлов.
Как скопировать файлы с помощью модуля shutil?
В модуле shutil доступны различные методы копирования содержимого одного файла в другой файл.
1. shutil.copyfileobj(src,dst)
Предположим, мы хотим скопировать содержимое файла data.txt кому data1.txt , мы можем использовать следующий фрагмент кода:
import shutil f=open('data.txt','r') f1=open('data1.txt','w') # Syntax: shutil.copyfileobj(src,dst) shutil.copyfileobj(f,f1) f.close() f1.close()
2. shutil.copy(src,dst)
Другой способ копирования данных из одного файла в другой может быть без создания объекта file. Здесь мы передаем относительный путь к нашим файлам.
import shutil #shutil.copy(src.dst) shutil.copy('data.txt','data1.txt')
3. shutil.copy2(src,dst)
функции copy (src,dst) и copy2(src,dst) почти одинаковы, но copy2(src,dst) также копирует метаданные исходного файла.
Метаданные включают информацию о том, когда файл был создан, доступен или изменен.
import shutil #shutil.copy2(src,dst) shutil.copy2('data.txt','data1.txt')
4. shutil.copyfile(src,dst)
Здесь источником и местом назначения может быть относительный путь или абсолютный путь. Предположим, мы хотим скопировать файл в папку, мы можем использовать следующий фрагмент кода:
import shutil import os path='D:\DSCracker\DS Cracker\Python' print("Before copying file:") print(os.listdir(path)) shutil.copyfile('data.txt','Python/data3.txt') print("After copying file:") print(os.listdir(path))
Выход:
Before copying file: ['hey.py'] After copying file: ['data3.txt', 'hey.py']
5. shutil.move(src,dst)
Предположим, мы хотим удалить файл из одного места и переместить его в другое место. Вот, давайте двигаться shutil.py из источника в другое место:
import shutil import os path='D:\DSCracker\DS Cracker' print("Source folder:") print(os.listdir(path)) path1='D:\DSCracker\DS Cracker\Python' shutil.move('shutil.py','Python') print("After moving file shutil.py to destination folder, destination contains:") print(os.listdir(path1))
Выход:
Source folder: ['cs', 'data.txt', 'Python', 'ReverseArray', 'ReverseArray.cpp', 'shutil.py'] After moving file shutill.py to destination folder, destination contains: ['data1.txt', 'data3.txt', 'hey.py', 'nsawk.py', 'shutil.py']
6. shutil.copytree(src,dst)
Если мы хотим скопировать полную папку, содержащую все ее файлы, в новое место, мы можем использовать функцию copytree(src,dst ).
Он рекурсивно копирует все дерево каталогов с корнем в src в каталог с именем dst и возвращает каталог назначения.
Давайте скопируем папку Python в папку Новая папка .
Примечание: Мы должны создать новую папку внутри вашей целевой папки, так как функция не позволяет копировать содержимое в уже существующую папку.
Итак, здесь мы создали папку python 1 внутри папки Новая папка .
import os import shutil path='D:\DSCracker\DS Cracker\Python' print("Source folder:") print(os.listdir(path)) shutil.copytree('Python','NewPython/python1') path1='D:\DSCracker\DS Cracker\NewPython\python1' print("Destination folder:") print(os.listdir(path1))
Выход:
Source folder: ['data1.txt', 'data3.txt', 'hey.py', 'nsawk.py', 'shutill.py'] Destination folder: ['data1.txt', 'data3.txt', 'hey.py', 'nsawk.py', 'shutill.py']
Как удалить/удалить файлы с помощью модуля shutil?
Теперь, когда мы узнали, как мы можем работать с перемещением и копированием файлов, давайте научимся удалять или удалять файлы из определенных мест в ваших скриптах Python.
Используя shutil.rmtree() , мы можем удалить любую папку,файл или каталог. Давайте удалим папку Python .
import os import shutil path='D:\DSCracker\DS Cracker' print("Before deleting:") print(os.listdir(path)) shutil.rmtree('Python') print("After deleting:") print(os.listdir(path))
Выход:
Before deleting: ['cs', 'data.txt', 'NewPython', 'program.py', 'Python', 'ReverseArray', 'ReverseArray.cpp'] After deleting: ['cs', 'data.txt', 'NewPython', 'program.py', 'ReverseArray', 'ReverseArray.cpp']
Как скопировать биты разрешений из одного файла в другой?
Копирование файла-это одна часть. Что делать, если вы просто хотите скопировать те же разрешения файла во все другие файлы? Давайте научимся делать именно это, используя модуль shutil здесь.
1. shutil.copymode(src,dst)
Этот метод копирует биты разрешений из src в dst. Давайте скопируем биты разрешений из каталога Python в каталог Python 1 .
import shutil import os src= 'D:\\DSCracker\\DS Cracker\\Python' dest='D:\\DSCracker\\DS Cracker\\Python1' print("Before using shutil.copymode(), Permission bits of destination:") print(oct(os.stat(dest).st_mode)[-3:]) shutil.copymode(src, dest) print("After using shutil.copymode(), Permission bit of destination:") print(oct(os.stat(dest).st_mode)[-3:])
Выход:
Before using shutil.copymode(), Permission bits of source: 677 After using shutil.copymode(), Permission bit of destination: 777
2. shutil.copystat(src,dst)
shutil.copystat(src.dst) копирует биты разрешений вместе с метаданными.
import shutil import os import time src= 'D:\\DSCracker\\DS Cracker\\Python' dest='D:\\DSCracker\\DS Cracker\\Python1' print("Before using shutil.copystat():") print("Permission bits:",oct(os.stat(src).st_mode)[-3:]) print("Last modification time:", time.ctime(os.stat(src).st_mtime)) print("Modification time:",time.ctime(os.stat(src).st_mtime)) shutil.copystat(src, dest) print("After using shutil.copystat():") print("Permission bits:",oct(os.stat(dest).st_mode)[-3:]) print("Last modification time:", time.ctime(os.stat(dest).st_mtime)) print("Modification time:",time.ctime(os.stat(dest).st_mtime))
Выход:
Before using shutil.copystat(): Permission bits: 777 Last modification time: Mon Dec 7 02:20:37 2020 Modification time: Mon Dec 7 02:20:37 2020 After using shutil.copystat(): Permission bits: 777 Last modification time: Mon Dec 7 03:43:47 2020 Modification time: Mon Dec 7 03:43:47 2020
Другие функции в модуле shutil
Теперь давайте рассмотрим различные функции модуля shutil.
1. shutil.disk_usage(путь)
функция shutil.disk_usage(path) возвращает статистику использования диска по заданным именам путей в виде кортежа с атрибутами total , который представляет собой общий объем памяти, used , который является используемым пространством и free , который является свободным пространством в байтах.
import shutil import os path = 'D:\\DSCracker\\DS Cracker\\NewPython\\python1' statistics=shutil.disk_usage(path) print(statistics)
Выход:
usage(total=1000203087872, used=9557639168, free=990645448704)
2. шутил.который()
шутил.функция which() возвращает путь к исполняемому приложению, которое запустилось бы, если бы была вызвана данная команда cmd.
import shutil import os cmd='Python' locate = shutil.which(cmd) print(locate)
Выход:
C:\Users\AskPython\AppData\Local\Microsoft\WindowsApps\Python.EXE
Вывод
В этом уроке мы рассмотрели, как мы можем копировать, удалять и работать с другими операциями над файлами и папками с помощью модуля shutil в python. Надеюсь, вам всем понравилось. Оставайтесь с нами!
Рекомендации
shutil-Официальные документы по операциям с файлами высокого уровня