Рубрики

Python | метод shutil.copy ()

Модуль Shutil в Python предоставляет множество функций высокоуровневых операций над файлами и коллекциями файлов. Он входит в стандартные утилиты Python. Этот модуль помогает автоматизировать процесс копирования и удаления файлов и каталогов.

Метод shutil.copy() в Python используется для копирования содержимого исходного файла в конечный файл или каталог. Он также сохраняет режим разрешения файла, но другие метаданные файла, такие как время создания и изменения файла, не сохраняются.
Источник должен представлять файл, но местом назначения может быть файл или каталог. Если местом назначения является каталог, тогда файл будет скопирован в место назначения с использованием базового имени файла из источника. Кроме того, место назначения должно быть доступно для записи. Если пункт назначения является файлом и уже существует, он будет заменен исходным файлом, в противном случае будет создан новый файл.

Syntax: shutil.copy(source, destination, *, follow_symlinks = True)

Parameter:
source: A string representing the path of the source file.
destination: A string representing the path of the destination file or directory.
follow_symlinks (optional) : The default value of this parameter is True. If it is False and source represents a symbolic link then destination will be created as a symbolic link.

Note: The ‘*’ in parameter list indicates that all following parameters (Here in our case ‘follow_symlinks’) are keyword-only parameters and they can be provided using their name, not as positional parameter.

Return Type: This method returns a string which represents the path of newly created file.

Код № 1: Использование метода shutil.copy () для копирования файла из источника в место назначения

# Программа Python для объяснения метода shutil.copy ()

    
# импорт модуля os

import os

  
# импорт модуля shutil

import shutil

  
# путь

path = '/home/User/Documents'

  
# Список файлов и каталогов
# в '/ home / User / Documents'

print("Before copying file:")

print(os.listdir(path))

  

  
# Исходный путь

source = "/home/User/Documents/file.txt"

  
# Разрешение на печать файла
№ источника

perm = os.stat(source).st_mode

print("File Permission mode:", perm, "\n")

  
# Путь назначения

destination = "/home/User/Documents/file(copy).txt"

  
# Скопируйте содержимое
# источник до места назначения

dest = shutil.copy(source, destination)

  
# Список файлов и каталогов
# в "/ home / User / Documents"

print("After copying file:")

print(os.listdir(path))

  
# Разрешение на печать файла
№ пункта назначения

perm = os.stat(destination).st_mode

print("File Permission mode:", perm)

  
# Печать пути заново
# созданный файл

print("Destination path:", dest)

Выход:

Before copying file:
['hrithik.png', 'test.py', 'sample.txt', 'file.text', 'copy.cpp']
File permission mode: 33188

After copying file:
['hrithik.png', 'test.py', 'sample.txt', 'file.text', 'file(copy).txt', 'copy.cpp']
File permission mode: 33188 
Destination path: /home/User/Documents/file(copy).txt

Код № 2: если пункт назначения является каталогом

# Программа Python для объяснения метода shutil.copy ()

    
# импорт модуля os

import os

  
# импорт модуля shutil

import shutil

  

  
# Исходный путь

source = "/home/User/Documents/file.txt"

  
# Путь назначения

destination = "/home/User/Desktop/"

  
# Скопируйте содержимое
# источник до места назначения

dest = shutil.copy(source, destination)

  
# Список файлов и каталогов
# в "/ home / User / Desktop"

print("After copying file:")

print(os.listdir(destination))

  
# Печать пути заново
# созданный файл

print("Destination path:", dest)

Выход:

After copying file:
['input.txt', 'GeeksForGeeks', 'output.txt', 'file.txt', 'web.py', 'tree.cpp']
Destination path: /home/User/Desktop/file.txt

Код № 3: Возможные ошибки при использовании метода shutil.copy ()

# Программа Python для объяснения метода shutil.copy ()

    
# импорт модуля shutil

import shutil

  

  
# Если источник и место назначения
# представляет один и тот же файл
Исключение # SameFileError
# будет поднят

  
# Если пункт назначения
# не доступно для записи
Исключение # PermissionError
# будет поднят

  

  
# Исходный путь

source = "/home/User/Documents/file.txt"

  
# Путь назначения

destination = "/home/User/Documents/file.txt"

  
# Скопируйте содержимое
# источник до места назначения
shutil.copy(source, destintion)

Выход:

Traceback (most recent call last):
  File "try.py", line 26, in 
    dest = shutil.copy(source, destination)
  File "/usr/lib/python3.6/shutil.py", line 241, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib/python3.6/shutil.py", line 104, in copyfile
    raise SameFileError("{!r} and {!r} are the same file".format(src, dst))
shutil.SameFileError: '/home/User/Desktop/file.txt' and  '/home/User/Desktop/file.txt'
are the same file

Код № 4: Обработка ошибок при использовании метода shutil.copy ()

# Программа Python для объяснения метода shutil.copy ()

    
# импорт модуля shutil

import shutil

  
# Исходный путь

source = "/home/User/Documents/file.txt"

  
# Путь назначения

destination = "/home/User/Documents/file.txt"

  
# Скопируйте содержимое
# источник до места назначения

  

try:

    shutil.copy(source, destination)

    print("File copied successfully.")

  
# Если источник и пункт назначения совпадают

except shutil.SameFileError:

    print("Source and destination represents the same file.")

  
# Если есть какие-либо проблемы с разрешением

except PermissionError:

    print("Permission denied.")

  
# Для других ошибок

except:

    print("Error occurred while copying file.")

Выход:

Source and destination represents the same file.

Ссылка: https://docs.python.org/3/library/shutil.html

Рекомендуемые посты:

Python | метод shutil.copy ()

0.00 (0%) 0 votes