logo

Shutil Module в Python

У цьому підручнику ми дізнаємось про модуль Shutil у Python. Ми обговоримо, як ми можемо виконувати операції з файлами високого рівня, такі як створення нового файлу копії та його архівування та копіювання вмісту одного файлу в інший за допомогою сценарію Python. Давайте познайомимося з базовим модулем Shutil.

Python Shutil Module

Модуль shutil Python надає можливість виконувати операції з файлами високого рівня. Він може працювати з файловим об’єктом і пропонує нам можливість копіювати та видаляти файли. Він обробляє семантику низького рівня, наприклад створення та закриття файлових об’єктів після виконання всіх операцій.

Робота модуля Shutil

Модуль Python shutil постачається з багатьма вбудованими методами. Ми розглянемо кілька важливих методів. Щоб розпочати роботу з цим модулем, спочатку нам потрібно імпортувати його в наш поточний файл Python.

Копіювати файли

Цей модуль забезпечує копіювати() функція, яка використовується для копіювання даних з одного файлу в інший. Файли мають бути в одному каталозі, а цільовий файл має бути доступним для запису. Давайте розберемося з наступним синтаксисом.

Синтаксис-

 shutil.copyfile(source, destination, *, follow_symlinks = True) 

Параметр:

У наведеному вище синтаксисі -

  • Першим аргументом є джерело, яке показує шлях до вихідного файлу.
  • Другим аргументом є призначення, яке показує шлях до цільового файлу.
  • Третій аргумент необов'язковий; значення цього параметра за замовчуванням - true.
  • Він повертає рядок, який показує шлях до новоствореного файлу.

Давайте розберемося в наступному прикладі.

приклад -

java int у рядку
 import os import shutil # Creating a new folder in the current directory os.mkdir('javatpoint') # It will show the empty folder print('Empty Folder:', os.listdir('javatpoint')) # testcompare.py file will be copied in the javatpoint folder shutil.copy('testcompare.py', 'javatpoint') # After coping the file folder shows the file print('File Copied Name:', os.listdir('javatpoint')) 

Вихід:

 Empty Folder: [] File Copied Name: ['testcompare.py'] 

Пояснення -

Функція copy() приймає назву каталогу як аргумент. Ось метадані не скопійовано, скопійований файл вважатиметься щойно створеним файлом. Цей метод також клонував усі дозволи файлу. Варто зауважити, що якщо файл призначення вже існує, його буде замінено вихідним файлом.

Давайте подивимося інший приклад.

Приклад - 2, якщо адресатом є каталог

 import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest = shutil.copy(source, destination) # Print the new path print(dest) 

Вихід:

 D:Python ProjectNewFilehello.txt 

Як ми вже згадували, функція copy() не копіює метадані. Але, ми будемо використовувати копія2() функція, яка дозволяє нам скопіювати файл разом із його метаданими.

Приклад - 3: Обробка помилок під час використання методу копіювання

 # importing shutil module import shutil # It is a source path source = r'D:Python ProjectNewFolder' # It is a destination path destination = r'D:Python ProjectNewFolder' try: shutil.copy(source, destination) print('File copied successfully.') # If the given source and path are same except shutil.SameFileError: print('Source and destination represents the same file.') # If there is no permission to write except PermissionError: print('Permission denied.') # For other errors except: print('Error occurred while copying file.') 

Вихід:

 Source and destination represents the same file. 

Функція copy2().

Ця функція схожа на копіювати() функція. Він також може копіювати вміст одного файлу в інший, але єдина відмінність полягає в тому, що він може зберегти метадані файлу. Давайте розберемося з наступним синтаксисом.

Синтаксис:

 shutil.copy2(source, destination, *, follow_symlinks = True) 

Параметр:

У наведеному вище синтаксисі -

  • Першим аргументом є джерело, яке показує шлях до вихідного файлу.
  • Другим аргументом є призначення, яке показує шлях до цільового файлу.
  • Третій аргумент необов'язковий; значення цього параметра за замовчуванням - true.
  • Він повертає рядок, який показує шлях до новоствореного файлу.

Давайте розберемося в наступному прикладі.

приклад -

 import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' metadata = os.stat(source) print(metadata) # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest1 = shutil.copy2(source, destination) metadata = os.stat(dest1) print('After copying file') print(metadata) # Print the new path print(dest1) 

Вихід:

 os.stat_result(st_mode=33206, st_ino=562949953459285, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815671, st_mtime=1622705607, st_ctime=1622705607) After copying file os.stat_result(st_mode=33206, st_ino=562949953459287, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815748, st_mtime=1622705607, st_ctime=1622706243) D:Python ProjectNewFilehello.txt 

Функція shutil.copyfile().

Цей метод використовується для копіювання вмісту вихідного файлу до цільового файлу без метаданих. Джерело та призначення повинні мати файл, а файл призначення має надавати дозвіл на запис. Якщо файл призначення вже є, його буде замінено новим файлом, інакше створіть новий файл.

Давайте розглянемо наступний синтаксис.

Синтаксис:

 shutil.copyfile(source, destination, *, follow_symlinks = True) 

Параметри:

У наведеному вище синтаксисі -

  • Першим аргументом є джерело, яке показує шлях до вихідного файлу.
  • Другим аргументом є призначення, яке показує шлях до цільового файлу.
  • Третій аргумент необов'язковий; значення цього параметра за замовчуванням - true.
  • Він повертає рядок, який показує шлях до новоствореного файлу.

Давайте розберемося в наступному прикладі.

приклад -

 import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFilehi.txt' # Storing the new path of hello.txt file dest1 = shutil.copyfile(source, destination) # Print the new path print(dest1) 

Вихід:

 D:Python ProjectNewFilehi.txt 

Функція shutil.copytree().

Цей метод використовується для реплікації повного каталогу. Він копіює ціле дерево каталогів із коренем джерела до каталогу призначення. Цільовий каталог не повинен бути присутнім. Давайте розглянемо наступний синтаксис.

що таке подвійна java

Синтаксис:

 shutil.copytree(src, dst, symlinks = False, ignore = None, copy_function = copy2, igonre_dangling_symlinks = False) 

Параметри:

У наведеному вище синтаксисі:

перетворення об'єкта в рядок
    src -Він показує шлях до вихідного каталогу.рука -Він показує шлях до каталогу призначення.символічні посилання (необов'язково) -Він приймає логічні значення - True і False. Це залежить від того, які метадані оригінальних посилань або посилань буде скопійовано в нове дерево.ігнорувати (необов'язково) -За замовчуванням це «Немає», але якщо ігнорування передано, це має бути виклик, який отримує як аргументи. Каталог відвідує copytree().copy_function (опціонально) -Копія2 є значенням за замовчуванням цього параметра. The копіювати() функцію можна використовувати як параметр.ignore_dangling_symlinks (необов'язково) -Цей параметр використовується для виклику винятку, якщо файл, на який вказує символічне посилання, не існує.
  • Він повертає рядок, який представляє шлях до новоствореного каталогу.

приклад -

 # importing shutil module import shutil # It is source path src = r'D:Python Projectjavatpoint' # It is destination path dest = r'D:Python ProjectNewFolder' # Copy the content of # source to destination dest1 = shutil.copytree(src, dest) # Now we print path of newly # created file print('Destination path:', dest1) 

Вихід:

 Destination path: D:Python ProjectNewFolder 

shutil.rmtree()

Цей метод використовується для видалення повного дерева каталогів. Давайте розглянемо наступний синтаксис.

Синтаксис:

 shutil.rmtree(path, ignore_errors=False, onerror=None) 

параметр-

У наведеному вище синтаксисі -

    шлях -Він представляє шлях до файлу. Об’єкт, подібний до шляху, є об’єктом рядка або байтів.ignore_errors -Видалення буде проігноровано, якщо цей аргумент має значення True.onerror -Якщо ignore_errors має значення false, такі помилки обробляються шляхом виклику обробника, визначеного onerror.

Давайте розберемо такий приклад -

приклад -

 import shutil import os # location location_dir = r'D:Python ProjectNewFile' # directory directory = r'D:Python Projectjavatpoint' # path path1 = os.path.join(location_dir, directory) # removing directory shutil.rmtree(path1) 

Наведений вище код видалить вказаний каталог.

Функція shutil.which().

The shutil.which() функція використовується для отримання шляху до виконуваної програми, яка буде запущена, якщо буде викликано даний cmd. Він знаходить файл за вказаним шляхом. Давайте розглянемо наступний синтаксис.

Синтаксис:

 shutil.which(cmd, mode = os.F_OK | os.X_OK, path = None) 

Параметри

У наведеному вище синтаксисі -

    cmd -Це рядок, який представляє файл.режим -Він визначає режим файлу, у якому метод має виконуватися.шлях -Цей параметр визначає шлях, який буде використовуватися.
  • Цей метод повертає шлях до виконуваної програми.

Давайте розберемося в наступному прикладі.

приклад -

 # importing shutil module import shutil # search the file cmd = 'python' # Using shutil.which() method locating = shutil.which(cmd) # Print result print(locating) 

Вихід:

 C:Pythonpython.EXE 

Він знайде вказаний файл на комп’ютері, якщо файл знайдено, він повертає шлях до файлу, інакше повертає Немає.