Similar presentations:
Ввод-вывод. Исключения. Стандартная библиотека
1.
Лекция № 5.Ввод-вывод. Исключения.
Стандартная библиотека.
Нижний Новгород
2023 г.
2.
Ввод-выводВвод от пользователя
3.
ФайлыОткрывать и использовать файлы для чтения
или записи можно путём создания объекта
класса file, а читать/записывать в файл – при
помощи его методов read, readline или write
соответственно.
Возможность читать или записывать в файл
зависит от режима, указанного при открытии
файла.
По окончании работы с файлом, нужно
вызвать метод close, чтобы указать Python,
что файл больше не используется.
4.
Файлы5.
PicklePython предоставляет стандартный модуль с
именем pickle, при помощи которого можно
сохранять любой объект Python в файле, а
затем извлекать его обратно.
Это называется длительным хранением
объекта.
6.
Pickle7.
ИсключенияИсключения возникают тогда, когда в
программе возникает некоторая
исключительная ситуация.
Например, к чему приведёт попытка чтения
несуществующего файла? Или если файл
был случайно удалён, пока программа
работала? Такие ситуации обрабатываются
при помощи исключений.
Это касается и программ, содержащих
недействительные команды. В этом случае
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.
Модуль sys20.
Модуль loggingПредставьте ситуацию, когда необходимо сохранить
некоторые отладочные или другие важные
сообщения где-нибудь, чтобы иметь возможность
позже проверить, отработала ли программа, как
ожидалось.
Сделать это можно при помощи модуля logging.
21.
Модуль logging22.
Чтение и запись файлов 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()