819.69K
Category: programmingprogramming

Ввод-вывод. Исключения. Стандартная библиотека

1.

Лекция № 5.
Ввод-вывод. Исключения.
Стандартная библиотека.
Нижний Новгород
2023 г.

2.

Ввод-вывод
Ввод от пользователя

3.

Файлы
Открывать и использовать файлы для чтения
или записи можно путём создания объекта
класса file, а читать/записывать в файл – при
помощи его методов read, readline или write
соответственно.
Возможность читать или записывать в файл
зависит от режима, указанного при открытии
файла.
По окончании работы с файлом, нужно
вызвать метод close, чтобы указать Python,
что файл больше не используется.

4.

Файлы

5.

Pickle
Python предоставляет стандартный модуль с
именем pickle, при помощи которого можно
сохранять любой объект Python в файле, а
затем извлекать его обратно.
Это называется длительным хранением
объекта.

6.

Pickle

7.

Исключения
Исключения возникают тогда, когда в
программе возникает некоторая
исключительная ситуация.
Например, к чему приведёт попытка чтения
несуществующего файла? Или если файл
был случайно удалён, пока программа
работала? Такие ситуации обрабатываются
при помощи исключений.
Это касается и программ, содержащих
недействительные команды. В этом случае
Python должен сообщить, что обнаружил
ошибку.

8.

Ошибки
Рассмотрим простой вызов функции print.
Обратите внимание на заглавную букву P. В
этом случае Python поднимает
синтаксическую ошибку.

9.

Исключения
Попытаемся считать что-либо от пользователя.
Нажмем Сtrl-D и посмотрим, что произойдёт.
Python поднимает ошибку с именем EOFError, что
означает, что он обнаружил символ конца файла
(который вводится при помощи Ctrl-D) там, где не
ожидал.

10.

Обработка исключений
Обрабатывать исключения можно при помощи
оператора try..except . При этом все обычные
команды помещаются внутрь try-блока, а все
обработчики исключений – в except-блок.

11.

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

12.

Обработка исключений
Для каждого выражения try должно быть хотя бы одно
соответствующее выражение except.
Если ошибка или исключение не обработано, будет
вызван обработчик Python по умолчанию, который
останавливает выполнение программы и выводит на
экран сообщение об ошибке.
Можно также добавить пункт else к соответствующему
блоку try..except. Этот пункт будет выполнен тогда,
когда исключений не возникает.

13.

Вызов исключения
Исключение можно поднять при помощи
оператора raise, передав ему имя
ошибки/исключения, а также объект
исключения, который нужно выбросить.
Вызываемая ошибка или исключение должна
быть классом, который прямо или непрямо
является производным от класса Exception.

14.

Вызов исключения

15.

Try .. Finally
Например, в программе происходит чтение файла и
необходимо убедиться, что объект файла был
корректно закрыт и что не возникло никакого
исключения. Этого можно достичь с применением
блока finally.

16.

Оператор with
Типичной схемой является запрос некоторого ресурса
в блоке try с последующим освобождением этого
ресурса в блоке finally. Для того, чтобы сделать это
более «чисто», существует оператор with :

17.

Стандартная библиотека
Стандартная библиотека Python содержит огромное
количество полезных модулей и является частью
стандартного комплекта поставки Python.
Ознакомиться со стандартной библиотекой Python
очень важно, так как множество задач можно
решить очень быстро, если вы знакомы с
возможностями этих библиотек.
Рассмотрим
некоторые
наиболее
используемые модули этой библиотеки.
часто

18.

Модуль sys
Модуль sys содержит функциональность, характерную
для системы.
Предположим,
нам
нужно
узнать
версию
используемой команды Python с тем, чтобы, к
примеру, убедиться в том, что мы используем как
минимум версию 3. Модуль sys предоставляет такую
возможность.

19.

Модуль sys

20.

Модуль logging
Представьте ситуацию, когда необходимо сохранить
некоторые отладочные или другие важные
сообщения где-нибудь, чтобы иметь возможность
позже проверить, отработала ли программа, как
ожидалось.
Сделать это можно при помощи модуля logging.

21.

Модуль logging

22.

Чтение и запись файлов Excel
Установка Pandas
pip install pandas
#ModuleNotFoundError: No module named
'openpyxl‘
#pip install openpyxl xlsxwriter xlrd

23.

Запись в файл Excel с python
Будем хранить информацию, которую нужно записать в
файл Excel, в DataFrame.
А с помощью встроенной функции to_excel() ее можно
будет записать в Excel.
Сначала импортируем модуль pandas. Потом
используем словарь для заполнения DataFrame:
import pandas as pd
df = pd.DataFrame({'Name': ['Manchester City', 'Real Madrid', 'Liverpool',
'FC Bayern München', 'FC Barcelona', 'Juventus'],
'League': ['English Premier League (1)', 'Spain Primera Division',
'English Premier League (1)', 'German 1. Bundesliga (1)',
'Spain Primera Division (1)', 'Italian Serie A (1)'],
'TransferBudget': [176000000, 188500000, 90000000,
100000000, 180500000, 105000000]})

24.

Теперь можно использовать функцию
to_excel() для записи содержимого в файл.
Единственный аргумент — это путь к файлу:
df.to_excel('./teams.xlsx')

25.

Запись нескольких DataFrame в файл Excel
Для этого можно указать отдельный лист для каждого объекта:
salaries1 = pd.DataFrame({'Name': ['L. Messi', 'Cristiano Ronaldo', 'J. Oblak'],
'Salary': [560000, 220000, 125000]})
salaries2 = pd.DataFrame({'Name': ['K. De Bruyne', 'Neymar Jr', 'R. Lewandowski'],
'Salary': [370000, 270000, 240000]})
salaries3 = pd.DataFrame({'Name': ['Alisson', 'M. ter Stegen', 'M. Salah'],
'Salary': [160000, 260000, 250000]})
salary_sheets = {'Group1': salaries1, 'Group2': salaries2, 'Group3': salaries3}
writer = pd.ExcelWriter('./salaries.xlsx', engine='xlsxwriter')
for sheet_name in salary_sheets.keys():
salary_sheets[sheet_name].to_excel(writer,
sheet_name=sheet_name, index=False)
writer.save()

26.

Поменять название листа можно, добавив
параметр sheet_name в вызов to_excel():
df.to_excel('./teams.xlsx',
sheet_name='Budgets', index=False)

27.

Здесь создаются 3 разных DataFrame с разными
названиями, которые включают имена сотрудников, а
также размер их зарплаты. Каждый объект
заполняется соответствующим словарем.
Объединим все три в переменной salary_sheets, где
каждый ключ будет названием листа, а значение —
объектом DataFrame.
Дальше используем движок xlsxwriter для создания
объекта writer. Он и передается функции to_excel().
Перед записью пройдемся по ключам salary_sheets и
для каждого ключа запишем содержимое в лист с
соответствующим именем. Вот сгенерированный
файл:

28.

29.

Чтение файлов Excel с python
По аналогии с записью объектов DataFrame в
файл Excel, эти файлы можно и читать,
сохраняя данные в объект DataFrame. Для
этого достаточно воспользоваться функцией
read_excel():
top_players = pd.read_excel('./top_players.xlsx')
top_players.head()

30.

Посмотрим на вывод функции head():

31.

Чтение определенных колонок из файла Excel
Иногда удобно прочитать содержимое файла целиком, но
бывают случаи, когда требуется получить доступ к
определенному элементу. Например, нужно считать значение
элемента и присвоить его полю объекта.
Это делается с помощью функции read_excel() и параметра
usecols. Например, можно ограничить функцию, чтобы она
читала только определенные колонки. Добавим параметр,
чтобы он читал колонки, которые соответствуют значениям
«Name», «Overall» и «Potential».
Для этого укажем числовой индекс каждой колонки:
cols = [0, 2, 3]
top_players = pd.read_excel('./top_players.xlsx', usecols=cols)
top_players.head()
English     Русский Rules