В този урок ще научим за модула 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)
Параметри:
В горния синтаксис:
- Връща низа, който представлява пътя на новосъздадената директория.
пример -
# 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)
Параметри
java за сортиране на списък
В горния синтаксис -
- Този метод връща пътя до изпълнимо приложение.
Нека разберем следния пример.
пример -
# 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
Той ще намери дадения файл в компютъра, ако файлът бъде намерен, той връща пътя на файла, в противен случай връща Няма.