Автор оригинала: 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.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.
Счастливого Пифонирования!