Автор оригинала: Team Python Pool.
Модуль Python Shutil: 10 Методов, Которые Вы Должны знать
Во-первых, модуль Python Shutil в Python предоставляет множество функций для выполнения высокоуровневых операций с файлами и коллекциями файлов. Во – вторых, это встроенный модуль, который поставляется с автоматизацией процесса копирования и удаления файлов и каталогов. В-третьих, этот модуль также заботится о низкоуровневой семантике, такой как создание, закрытие файлов после их копирования и фокусировка на бизнес-логике.
Как работает модуль python shutil?
Основной синтаксис использования модуля shutil выглядит следующим образом:
import shutil
shutil.submodule_name(arguments)Операции с файлами и каталогами
1. Python shutil.copy()
shutil.copy(): Эта функция используется для копирования содержимого или текста исходного файла в целевой файл или каталоги. Он также сохраняет режим разрешений файла, но другой тип метаданных файла, такой как создание файла и его модификация, не сохраняется.
import os
# import the shutil module
import shutil
# write the path of the file
# List all the files and directories in the given path
print("Before copying file:")
print(os.listdir(path))
# write the Source path
# Print the file permission of the source given.stat(source).st_mode
print("File Permission mode:", perms, "\n")
# Write the Destination path
# Copy the content of source file to destination file .copy(source, destinationfile)
# List files and directories of the path
print("After copying file:")
print(os.listdir(path))
# Print again all the file permission.stat(destinationfile).st_mode
print("File Permission mode:", perms)
# Print path of of the file which is created
print("Destination path:", dests)Выход:
Before copying file:
['hrithik.png', 'test.py', 'file.text', 'copy.cpp']
File permission mode: 33188
After copying file:
['hrithik.png', 'test.py', 'file.text', 'file(copy).txt', 'copy.cpp']
File permission mode: 33188
Destination path: /home/User/file(copy).txtОбъяснение:
В этом коде, во-первых, мы проверяем файлы, присутствующие в каталоге. Во-вторых, тогда мы напечатаем права доступа к файлу и дадим исходный путь к файлу. В-третьих, мы дадим путь назначения копии содержимого там в новом файле. Наконец, мы снова распечатаем все файлы в каталоге и проверим, была ли создана копия этого файла или нет.
2. Python shutil.copy2()
Во – первых, эта функция точно такая же, как функция copy (), за исключением того, что она поддерживает метаданные исходного файла.
from shutil import *
import os
import time
import sys
def show_file_info(filename):
.stat(filename)
print '\tMode :', stat_info.st_mode
print '\tCreated :', time.ctime(stat_info.st_ctime)
print '\tAccessed:', time.ctime(stat_info.st_atime)
print '\tModified:', time.ctime(stat_info.st_mtime)
os.mkdir('example')
print ('SOURCE time: ')
show_file_info('shutil_copy2.py')
copy2('shutil_copy2.py', 'example')
print ('DESTINATION time:')
show_file_info('example/shutil_copy2.py')Выход:
SOURCE time:
Mode : 33188
Created : Sat Jul 16 12:28:43 2020
Accessed: Thu Feb 21 06:36:54 2021
Modified: Sat Feb 19 19:18:23 2021
DESTINATION time:
Mode : 33188
Created : Mon Mar 1 06:36:54 2021
Accessed: Mon Mar 1 06:36:54 2021
Modified: Tue Mar 2 19:18:23 2021 Объяснение:
В этом коде мы написали функцию copy2 () – это то же самое, что и копия, просто она выполняет одну дополнительную операцию, которая поддерживает метаданные.
3. Python shutil.copyfile()
В этом файле функции копируются имена, что означает, что исходный файл копируется по указанному имени в том же каталоге. Он говорит, что дубликат файла присутствует в том же каталоге.
import os
import shutil
print('BEFORE LIST:', os.listdir('.'))
shutil.copyfile('file_copy.py', 'file_copy.py.copy')
print('AFTER LIST:', os.listdir('.'))Выход:
Latracal:shutil Latracal$ python file_copy.py
BEFORE LIST:
[' .DS_Store', 'file_copy.py']
AFTER LIST:
[ .DS_Store', 'file_copy.py', 'file_copy.py.copy']Объяснение:
В этом коде мы написали функцию copy file() то же имя файла копируется для нового файла, просто копия добавляется в новое имя файла. смотрите в выходных данных.
4. Python shutil.copytree()
Эта функция копирует файл и подкаталоги из одного каталога в другой. Это означает, что файл присутствует как в источнике, так и в месте назначения. Имена обоих параметров должны быть в строке.
import pprint
import shutil
import os
shutil.copytree('../shutil', './Latracal')
pprint.pprint(os.listdir('./Latracal'))Выход:
Latracal:shutil Latracal$ clone—directory. py
[' .DS—Store' ,
'file_copy.py' ,
'file_copy_new.py'
'file_with_metadata.py' ,
'clone_directory. py']Объяснение:
В этом коде мы написали функцию copytree (), чтобы получить дубликат этого файла.
5. Python shutil.rmtree()
Эта функция используется для удаления конкретного файла и подкаталога из указанного каталога, что означает, что каталог удаляется из системы.
import pprint
import shutil
import os
print('BEFORE:')
pprint.pprint(os.listdir('.'))
shutil.rmtree('Latracal')
print('\nAFTER:')
pprint.pprint(os.listdir('.'))Выход:
Latracal:shutil Latracal$ retove—dir.py
BEFORE:
['.DS_Store',
'file_copy.py',
'file_copy_new.py',
'remove_dir.py',
'copy_with_metadata.py',
'Latracal'
'clone_directory.py']
AFTER:
['.DS_Store',
'file—copy.py' ,
'file_copy_new.py',
'remove_dir.py',
'copy_with_metadata.py',
'clone_directory. py']Объяснение:
В этом коде мы написали функцию rmtree (), которая используется для удаления файла или каталога. Во – первых, мы перечислили все файлы и применили функцию удаления, а затем снова перечислили файл, чтобы увидеть, удален ли он или нет.
6. шутил.который()
Функция which() a-это отличный инструмент, который используется для поиска пути к файлу в вашей машине, чтобы легко добраться до конкретного места назначения, зная путь к файлу.
import shutil
import sys
print(shutil.which('bsondump'))
print(shutil.which('no-such-program'))выход:
Latracal:shutil Latracal$ python find_file.py
/usr/10ca1/[email protected]/bin/bsondunpОбъяснение:
В этом коде мы написали функцию that (), чтобы при необходимости найти любой из файлов.
7. Python shutil.disk_usage()
Эта функция используется для того, чтобы понять, сколько информации присутствует в нашей файловой системе, просто вызвав функцию disk_usage ().
import shutil
total_mem, used_mem,.disk_usage('.') **9
print('Total: {:6.2f} GB'.format(total_mem/gb))
print('Used : {:6.2f} GB'.format(used_mem/gb))
print('Free : {:6.2f} GB'.format(free_mem/gb))Выход:
shubhm:shutil shubhmS py
Total:499.9ø GB
Used :187.72 GB
Free :3ø8.26 GBОбъяснение:
В этом коде мы написали функцию disk_usage (), чтобы узнать об общем, используемом и свободном дисковом пространстве.
8. Python shutil.move()
Эта функция используется для перемещения файла и каталога из одного каталога в другой и удаления его из предыдущего каталога. Это также можно назвать переименованием файла или каталога.
import shutil
shutil.move('hello.py','newdir/')Выход:
'newdir/hello.py'Объяснение:
В этом коде мы написали функцию move() для перемещения файла или каталога из одного места в другое.
9. Python shutil.make_archive()
Эта функция используется для создания архива (zip или tar) файлов в корневом каталоге.
import shutil
import pprint
shutil.make_archive("newdirabcd","zip",root_directory)выход:
'C:\\python\\latracal\\newdirabcd.zip' Объяснение:
В этом коде мы написали функцию make_archive() с сообщением им имени корневого каталога для создания архива файлов в корневом каталоге.
10. Python shutil.get_archive_formats()
Эта функция дает нам все поддерживаемые форматы архивов в файле или каталоге.
import shutil import sys shutil.get_archive_formats()
выход:
[('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('xztar', "xz'ed tar-file"), ('zip', 'ZIP file')]Объяснение:
В этом коде мы написали функцию get_archive_formats (), чтобы получить вспомогательные форматы архивов в файле или каталоге.
Преимущества
- Модуль shutil поможет вам в автоматизации копирования файлов и каталогов.
- Этот модуль сохраняет шаги открытия, чтения, записи и закрытия файлов, когда фактической обработки нет, просто перемещая файлы.
Надо Читать
- [Лучшие] Способы удаления файла в Python
- Python Переименовывает Файл С Подробными Примерами Лучших Практик
- Реализация алгоритма Дейкстры в Python
- 8 Примеров реализации ОС.listdir() в Python
- Распакуйте файл в Python: 5 Сценариев, которые вы должны знать
Вывод
В этой статье мы изучили множество типов операций, которые позволяют нам работать с файловыми операциями высокого уровня, такими как копирование содержимого файла и создание новой копии файла и т. Д. без погружения в сложные операции обработки файлов с модулем shutil в Python.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.
Счастливого Пифонирования!