Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
develop:pyton:excep [2022/03/07 14:19] admin |
develop:pyton:excep [2022/12/18 15:09] (текущий) admin |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Обработка исключений. Итераторы, | ====== Обработка исключений. Итераторы, | ||
- | |||
- | |||
===== Обработка исключений ===== | ===== Обработка исключений ===== | ||
В Python исключения используются **не только в случае ошибки но при каких либо событиях**, | В Python исключения используются **не только в случае ошибки но при каких либо событиях**, | ||
+ | [[https:// | ||
==== try..except..else..finally ==== | ==== try..except..else..finally ==== | ||
- | |||
<code python> | <code python> | ||
try: | try: | ||
Строка 64: | Строка 62: | ||
===== Итераторы, | ===== Итераторы, | ||
- | |||
- | |||
- | <code python> | ||
- | </ | ||
- | |||
- | <code python> | ||
- | </ | ||
- | |||
==== Итераторы ==== | ==== Итераторы ==== | ||
- | + | Класс генерирующий **последовательности каких либо значений**. Могут быть полезны например в циклах for\\ | |
- | + | В таком классе нужно переопределить спец методы: | |
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Контейнеры ==== | ==== Контейнеры ==== | ||
- | + | Могут выступать как | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | === Конт-последовательности | + | |
- | + | ||
- | + | ||
- | <code python> | + | |
- | </code> | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | === Конт-словари | + | |
- | + | ||
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Перечисления ==== | ==== Перечисления ==== | ||
- | + | Набор каких-либо именованных значений, | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
<code python> | <code python> | ||
+ | from enum import Enum | ||
+ | class Versions(Enum): | ||
+ | v2_7= " | ||
+ | v3_6= " | ||
</ | </ | ||
Строка 125: | Строка 85: | ||
===== Работа с файлами и каталогами ===== | ===== Работа с файлами и каталогами ===== | ||
- | |||
- | |||
- | <code python> | ||
- | </ | ||
- | |||
- | <code python> | ||
- | </ | ||
- | |||
- | |||
==== Открытие ==== | ==== Открытие ==== | ||
- | + | Метод **open()**, путь можно передавать относительный, | |
- | + | **Текущий каталог** скрипта тот **из которого он запущен** а не тот в котором он располагается\\ | |
- | <code python> | + | Сделать каталог текущим можно также функцией **os.chdir()**\\ |
- | </ | + | Кодировка по умолчанию **Unicode**, |
- | + | При открытии можно задавать флаг буферизации, | |
- | <code python> | + | |
- | </ | + | |
==== Методы ==== | ==== Методы ==== | ||
- | + | Типа: **close(), write(), writelines(), | |
- | + | **fileno()** дескриптор файла, **truncate()**- обрезка файла, **tell()**- текущая позиция указателя, | |
- | <code python> | + | Так же есть атрибуты типа: **name, mode, closed, encoding, buffer**\\ |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Доступ (модуль os) ==== | ==== Доступ (модуль os) ==== | ||
- | + | Здесь так же присутствует метод **open()**, в аргументах можно задать режим и уровень доступа\\ | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== StringIO / BytesIO ==== | ==== StringIO / BytesIO ==== | ||
- | + | Данные классы позволяют работать с содержимым файла (в ОЗУ) как с переменной (строковой либо байтовой с-но)\\ | |
- | + | Методы во многом аналогичны методам работы с файлами.\\ | |
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Права доступа ==== | ==== Права доступа ==== | ||
- | + | Функция **os.access()** задает права доступа к объектам в linux-формате т.е. числовой (750 и тд.)\\ | |
- | + | Так же есть варианты для проверки доступа\\ | |
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Манипулирование файлами ==== | ==== Манипулирование файлами ==== | ||
+ | **copyfile(), | ||
+ | Модуль os.path- **exists(), getsize(), getatime(), getmtime()**\\ | ||
+ | Получить информацию о файле позволяет ф-я **os.stat()**, | ||
+ | Пути файлов/ | ||
+ | **abspath(), | ||
- | <code python> | ||
- | </ | ||
+ | ==== Перенаправление В/В ==== | ||
+ | Можно перенаправить стандартные потоки в файлы: | ||
<code python> | <code python> | ||
- | </ | + | import sys |
+ | my_out= sys.stdout | ||
+ | file= open(..) | ||
+ | sys.stdout= file | ||
+ | print(" | ||
- | ==== Перенаправление В/В ==== | + | sys.stdout=my_out |
- | + | print(" | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
</ | </ | ||
==== Сохранение объектов в файл ==== | ==== Сохранение объектов в файл ==== | ||
+ | Сохранить/ | ||
+ | В первом есть: **dump()**, **load()**, можно сохранять/ | ||
- | + | Модуль **shelve** позволяет сохранять объекты с заданным строковым ключом, | |
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Работа с каталогами ==== | ==== Работа с каталогами ==== | ||
- | + | **getcwd(), chdir(), mkdir(), rmdir(), listdir(), walk()** последняя для обхода дерева\\ | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
=== scandir() === | === scandir() === | ||
- | + | Более продвинуты инструмент для обхода списка каталогов\\ | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
==== Исключения файловых операций ==== | ==== Исключения файловых операций ==== | ||
- | + | Основной (родительский) класс для исключений при работе с каталогами - **OSError**, | |
- | + | ||
- | <code python> | + | |
- | </ | + | |
- | + | ||
- | <code python> | + | |
- | </ | + | |