logo

Модул Shutil в Python

В този урок ще научим за модула Shutil в Python. Ще обсъдим как можем да извършим файловата операция на високо ниво, като например създаване на нов файл за копиране и архивирането му и копиране на съдържание от един файл в друг файл с помощта на скрипта на Python. Нека имаме основно въведение в модула Shutil.

Python Shutil модул

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

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

Модулът shutil на Python идва с много вградени методи. Ще разгледаме няколко важни метода. За да започнем да работим с този модул, първо трябва да го импортираме в текущия Python файл.

myflixer

Копиране на файлове

Този модул предоставя копие() функция, която се използва за копиране на данни от един файл в друг. Файловете трябва да са в една и съща директория и целевият файл трябва да може да се записва. Нека разберем следния синтаксис.

Синтаксис-

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

Параметър:

В горния синтаксис -

  • Първият аргумент е източник, който показва пътя на изходния файл.
  • Вторият аргумент е дестинация, който показва пътя на целевия файл.
  • Третият аргумент не е задължителен; стойността по подразбиране на този параметър е true.
  • Връща низ, който показва пътя на новосъздадения файл.

Нека разберем следния пример.

пример -

 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().

Този метод се използва за репликиране на цялата директория. Той копира цяло дърво на директории, вкоренено в източника, в целевата директория. Целевата директория не трябва вече да присъства. Нека видим следния синтаксис.

arraylist java сортиране

Синтаксис:

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

Параметри:

В горния синтаксис:

    src -Показва пътя на изходната директория.ръка -Показва пътя на целевата директория.символни връзки (по избор) -Приема булевите стойности - True и False. Зависи от това кои метаданни на оригиналните връзки или връзки ще бъдат копирани в новото дърво.игнориране (по избор) -По подразбиране е None, но ако игнорирането е предадено, то трябва да бъде извикваем, който получава като свои аргументи. Директорията се посещава от copytree().функция_копиране (по избор) -Копието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.при грешка -Ако 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) 

Параметри

java за сортиране на списък

В горния синтаксис -

    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 

Той ще намери дадения файл в компютъра, ако файлът бъде намерен, той връща пътя на файла, в противен случай връща Няма.