Инструменты пользователя

Инструменты сайта


develop:pyton:excep

Это старая версия документа!


Обработка исключений. Итераторы, контейнеры и перечисления. Работа с файлами и каталогами

Обработка исключений

В Python исключения используются не только в случае ошибки но при каких либо событиях, например конец списка (ValueError)

try..except..else..finally

try:
  ...
except [ [as ]]:
  ... # Блоков может быть несколько
else:
  ... # Выполняется если исключения не было
finally:
  ... # Выполняется в любом случае
try:
  ...
except (NameError, IndexError, EsheError) as err:
  ... # обработка нескольких исключений
  print(err.__class__.__name__)

Более подробную инфу по исключению можно получить в tracebask.exc_info(), можно даже трассировку делать оО

with..as

Протокол «Менеджеров контекста» гарантирует выполнение завершающих действий, например закрытие файла, даже при исключениях.
Не совсем понял отличия от try..finally ..
В классе, который используется в этом блоке, должны быть еще спец функции enter() и exit()

Классы встроенных исключений

Все встроенные исключения являются классами, благодаря этому сохраняется вложенная структура

Пользовательские исключения

Для инициирования исключения предназначены функции: raise и assert
В первом случае указывается экземпляр (или объект) класса исключения, можно передавать параметры и т.д.
Во втором, делается проверка выражения и в случае «False», вызывается исключение

class myError(Exception):
  ...
 
try:
  raise myError("Описание исключения")
except myError as err:
 ...
 
##############
try:
  assert x>= 0, "Сообщение об ошибке"
except AssertionError as err:
  print(err) # Покажет сообщение об ошибке

Итераторы, контейнеры и перечисления

Итераторы

Класс генерирующий последовательности каких либо значений. Могут быть полезны например в циклах for
В таком классе нужно переопределить спец методы: iter() (флаг такого класса и инициализация за одно) и next() (вызывается на каждой итерации), для окончания следует вызывать исключение «StopIteration»

Контейнеры

Могут выступать как последовательности (списки/кортежи) или отображения (словари), можно обращаться к элементам по индексу (ключу)

Перечисления

Набор каких-либо именованных значений, аналогичен перечислениям из С

from enum import Enum
class Versions(Enum):
  v2_7= "2.7"
  v3_6= "3.7"

Работа с файлами и каталогами

 
 

Открытие

 
 

Методы

 
 

Доступ (модуль os)

 
 

StringIO / BytesIO

 
 

Права доступа

 
 

Манипулирование файлами

 
 

Перенаправление В/В

 
 

Сохранение объектов в файл

 
 

Работа с каталогами

 
 

scandir()

 
 

Исключения файловых операций

 
 
develop/pyton/excep.1646664165.txt.gz · Последнее изменение: 2022/03/07 14:42 — admin