У цьому підручнику ми дізнаємось про модуль 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)
Параметри:
У наведеному вище синтаксисі:
перетворення об'єкта в рядок
- Він повертає рядок, який представляє шлях до новоствореного каталогу.
приклад -
# 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)
параметр-
У наведеному вище синтаксисі -
Давайте розберемо такий приклад -
приклад -
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)
Параметри
У наведеному вище синтаксисі -
- Цей метод повертає шлях до виконуваної програми.
Давайте розберемося в наступному прикладі.
приклад -
# 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
Він знайде вказаний файл на комп’ютері, якщо файл знайдено, він повертає шлях до файлу, інакше повертає Немає.