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

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


develop:pyton:excep

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:pyton:excep [2022/03/07 14:19]
admin
develop:pyton:excep [2022/12/18 15:09] (текущий)
admin
Строка 1: Строка 1:
 ====== Обработка исключений. Итераторы, контейнеры и перечисления. Работа с файлами и каталогами ====== ====== Обработка исключений. Итераторы, контейнеры и перечисления. Работа с файлами и каталогами ======
- 
- 
  
 ===== Обработка исключений ===== ===== Обработка исключений =====
 В Python исключения используются **не только в случае ошибки но при каких либо событиях**, например конец списка (ValueError)\\ В Python исключения используются **не только в случае ошибки но при каких либо событиях**, например конец списка (ValueError)\\
 +[[https://pythonworld.ru/tipy-dannyx-v-python/isklyucheniya-v-python-konstrukciya-try-except-dlya-obrabotki-isklyuchenij.html|Классы исключений]]
  
 ==== try..except..else..finally ==== ==== try..except..else..finally ====
- 
 <code python> <code python>
 try: try:
Строка 64: Строка 62:
  
 ===== Итераторы, контейнеры и перечисления ===== ===== Итераторы, контейнеры и перечисления =====
- 
- 
-<code python> 
-</code> 
- 
-<code python> 
-</code> 
- 
  
 ==== Итераторы ==== ==== Итераторы ====
- +Класс генерирующий **последовательности каких либо значений**. Могут быть полезны например в циклах for\\ 
- +В таком классе нужно переопределить спец методы: **__iter__()** (флаг такого класса и инициализация за одно) и **__next__()** (вызывается на каждой итерации), для окончания следует вызывать исключение **"StopIteration"**\\
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Контейнеры ==== ==== Контейнеры ====
- +Могут выступать как последовательности (списки/кортежи) или отображения (словари), можно обращаться к элементам по индексу (ключу)\\
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code> +
- +
- +
-=== Конт-последовательности === +
- +
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code> +
- +
- +
-=== Конт-словари === +
- +
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Перечисления ==== ==== Перечисления ====
- +Набор каких-либо именованных значений, аналогичен перечислениям из С\\
- +
-<code python> +
-</code>+
  
 <code python> <code python>
 +from enum import Enum
 +class Versions(Enum):
 +  v2_7= "2.7"
 +  v3_6= "3.7"
 </code> </code>
  
Строка 125: Строка 85:
  
 ===== Работа с файлами и каталогами ===== ===== Работа с файлами и каталогами =====
- 
- 
-<code python> 
-</code> 
- 
-<code python> 
-</code> 
- 
- 
 ==== Открытие ==== ==== Открытие ====
- +Метод **open()**, путь можно передавать относительный, он автоматом преобразуется в абсолютный, методом **os.abspath()**\\ 
- +**Текущий каталог** скрипта тот **из которого он запущен** а не тот в котором он располагается\\ 
-<code python> +Сделать каталог текущим можно также функцией **os.chdir()**\\ 
-</code> +Кодировка по умолчанию **Unicode**, указать можно аргументом функции open(.., **encoding='..'**)\\ 
- +При открытии можно задавать флаг буферизации, иначе сброс на диск происходит только при закрытии файла или метод **flush()**\\
-<code python> +
-</code>+
  
  
 ==== Методы ==== ==== Методы ====
- +Типа: **close(), write(), writelines(), writable(), read(), readline(), readlines(), __next__(), flush()**\\ 
- +**fileno()** дескриптор файла, **truncate()**- обрезка файла, **tell()**- текущая позиция указателя, **seek()**- установить указатель в указанную позицию\\ 
-<code python> +Так же есть атрибуты типа: **name, mode, closed, encoding, buffer**\\ 
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Доступ (модуль os) ==== ==== Доступ (модуль os) ====
- +Здесь так же присутствует метод **open()**, в аргументах можно задать режим и уровень доступа\\
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== StringIO / BytesIO ==== ==== StringIO / BytesIO ====
- +Данные классы позволяют работать с содержимым файла (в ОЗУ) как с переменной (строковой либо байтовой с-но)\\ 
- +Методы во многом аналогичны методам работы с файлами.\\
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Права доступа ==== ==== Права доступа ====
- +Функция **os.access()** задает права доступа к объектам в linux-формате т.е. числовой (750 и тд.)\\ 
- +Так же есть варианты для проверки доступа\\
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Манипулирование файлами ==== ==== Манипулирование файлами ====
 +**copyfile(), copy(), copy2()**- копирования, отличается копированием (не копированием) сопутствующих метаданных, **move(), rename(), remove()**\\
 +Модуль os.path- **exists(), getsize(), getatime(), getmtime()**\\
 +Получить информацию о файле позволяет ф-я **os.stat()**, содержит расширенную информацию о файле\\
  
 +Пути файлов/каталогов:\\
 +**abspath(), isabs(), basename(), dirname(), split(), splitdrive(), splittext()**- работа с путями в т.д. проверка абсолютности, разбиение на имя диска (файла) и пути, объединение и т.д.\\
  
-<code python> 
-</code> 
  
 +==== Перенаправление В/В ====
 +Можно перенаправить стандартные потоки в файлы:\\
 <code python> <code python>
-</code>+import sys
  
 +my_out= sys.stdout
 +file= open(..)
 +sys.stdout= file
 +print("Вывод идет в файл")
  
-==== Перенаправление В/В ==== +sys.stdout=my_out 
- +print("Вернули обратно")
- +
-<code python> +
-</code> +
- +
-<code python>+
 </code> </code>
  
  
 ==== Сохранение объектов в файл ==== ==== Сохранение объектов в файл ====
 +Сохранить/восстановить объекты позволяют модули **pickle** и **shelve**\\
 +В первом есть: **dump()**, **load()**, можно сохранять/восстанавливать несколько объектов, последовательным вызовом\\
  
- +Модуль **shelve** позволяет сохранять объекты с заданным строковым ключом, по принципу сходному со словарем\\
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Работа с каталогами ==== ==== Работа с каталогами ====
- +**getcwd(), chdir(), mkdir(), rmdir(), listdir(), walk()** последняя для обхода дерева\\ 
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 === scandir() === === scandir() ===
- +Более продвинуты инструмент для обхода списка каталогов\\
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Исключения файловых операций ==== ==== Исключения файловых операций ====
- +Основной (родительский) класс для исключений при работе с каталогами - **OSError**, он содержит ряд более специализированных потомков\\
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
develop/pyton/excep.1646662749.txt.gz · Последнее изменение: 2022/03/07 14:19 — admin