Автор оригинала: Pankaj Kumar.
Когда вам нужно работать с файловыми операциями высокого уровня, такими как копирование содержимого файла, создайте новую копию файла и архивирования, модуль Python Cutil – это путь.
Python Pownil.
Модуль Python Cutil Module позволяет легко работать с файловыми объектами и без погружения в файловые объекты. Он заботится о низкоуровневой семантике, такую как создание объектов файлов, закрывая файлы, как только они будут скопированы, и позволяет нам сосредоточиться на бизнес-логике нашей программы. Давайте посмотрим модуль забивки в действии здесь.
Пример Python Pownil
Давайте посмотрим на разные примеры, чтобы понять модуль забивки.
Копировать файл
Использование Watchil’s copyfile ()
Функция, легко скопировать файл в новый файл только в текущем каталоге.
Вот образец программы о том, как мы можем сделать новый клон существующего файла в нашем текущем каталоге:
import os import shutil print('BEFORE:', os.listdir('.')) shutil.copyfile('file_copy.py', 'file_copy.py.copy') print('AFTER:', os.listdir('.'))
Давайте посмотрим на вывод этой программы:
Копировать файл в текущий каталог
Обратите внимание, что copyfile ()
Функция принимает имя нового файла для создания.
Копирование файлов в другой каталог
Использование Watchil’s Копировать ()
Функция, легко скопировать файл в другой каталог.
Давайте посмотрим на фрагмент кода о том, как это можно сделать:
import os import shutil os.mkdir('journaldev') print('BEFORE:', os.listdir('journaldev')) shutil.copy('file_copy.py', 'journaldev') print('AFTER:', os.listdir('journaldev'))
Давайте посмотрим на вывод этой программы:
Копировать файл в новый каталог
Эта функция отличается от copyfile ()
Функция, поскольку позже принимает имя файла в качестве параметра, тогда как Копировать ()
Функция принимает имя каталога в качестве ввода.
Наконец, Разрешения файла также клонированы При копировании файла с функциями, но метаданные не копируются, что означает, что созданный новый файл будет иметь свежее время, вместо исходного времени исходного файла.
Копирование файла с метаданными
Если вам нужно сделать точный клон файла, а также с разрешениями и метаданными файлами, мы можем использовать copy2 ()
функция. Обратите внимание, что это может не работать полностью на системе на основе POSIX Отказ
Вот образец программы на том, как мы используем эту функцию::
import os import shutil import time def file_metadata(file_name): stat_info = os.stat(file_name) print(' Mode :', oct(stat_info.st_mode)) print(' Created :', time.ctime(stat_info.st_ctime)) print(' Accessed:', time.ctime(stat_info.st_atime)) print(' Modified:', time.ctime(stat_info.st_mtime)) os.mkdir('journaldev') print('SOURCE FILE:') file_metadata('file_copy.py') shutil.copy2('file_copy.py', 'journaldev') print('DESTINATION FILE:') file_metadata('journaldev/file_copy.py')
Мы запускаем эту функцию в системе POSIX, поэтому Сохранено только режим файла и модифицированной даты :
Скопируйте файл метаданные (как можно больше)
В других системах даже созданное и доступное время достигло бы точно.
Репликация полного каталога
С copytree ()
Функция, можно полностью реплировать дерево каталога рекурсивно. Это означает, что если в каталоге есть больше каталогов, этот каталог также будет клонирован.
Давайте посмотрим на фрагмент кода о том, как мы можем клонировать полный каталог:
import pprint import shutil import os shutil.copytree('../shutil', './journaldev') print('\nAFTER:') pprint.pprint(os.listdir('./journaldev'))
Давайте посмотрим на вывод этой программы:
Копировать каталог рекурсивно
Обратите внимание, что мы не распечатаем каталог journaldev
содержимое до имени каталога copytree ()
Функция принимает в качестве ввода Не должно существовать перед запуском этой команды Отказ
Удаление каталога
Еще один простейший пример с Шусил
Удаление полного каталога. Не нужно рекурсивно удалять файлы или закрывать соединения по обработке файлов.
Вот образец программы на том, насколько легко она с rmtree ()
Функция:
import pprint import shutil import os print('BEFORE:') pprint.pprint(os.listdir('.')) shutil.rmtree('journaldev') print('\nAFTER:') pprint.pprint(os.listdir('.'))
Здесь мы распечатаем содержимое текущего каталога. Перед запуском скрипта journaldev
Каталог существует в текущей папке. После запуска скрипта он удаляется вместе с содержимым. Давайте посмотрим на вывод этой программы:
Удалить полное дерево каталога
Нахождение файлов
какие ()
Функция представляет отличный инструмент для поиска файла на вашем компьютере, который присутствует на пути.
Вот образец программы с примером файла:
import shutil print(shutil.which('bsondump')) print(shutil.which('no-such-program'))
Давайте посмотрим на вывод этой программы:
Найти файл на пути
Мониторинг файловой системы
Мы даже можем получить информацию о том, сколько присутствует в нашей файловой системе с Simplete Call с использованием disk_usage ()
функция.
Вот образец программы:
import shutil total_b, used_b, free_b = shutil.disk_usage('.') gb = 10 ** 9 print('Total: {:6.2f} GB'.format(total_b / gb)) print('Used : {:6.2f} GB'.format(used_b / gb)) print('Free : {:6.2f} GB'.format(free_b / gb))
Давайте посмотрим на вывод этой программы:
Файловое пространство
Заключение
В этом уроке мы изучали, как мы можем работать с файловыми операциями высокого уровня, такими как копирование содержимого файла, создайте новую копию файла и т. Д., Без дайвинга в комплексные операции по обработке файлов с Шусил
Модуль в Python.
Читайте больше сообщений Python здесь.