Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Язык программирования высокого уровня Python. Функции, структуры данных, дополнительные модули. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Задания для закрепления темы «Операции в Python»
A
B C D
E
1
Фамилия
Имя
Класс
Любимый предмет
Оценка за любимый
предмет
2
Александров
Артемий
5
информатика
4
3
Александрова
Александра
6
алгебра
4
4
Анай
Ангыр
10
геометрия
4
5
Ананкина
Полина
8
русский язык
4
6
Андреев
Ярослав
7
информатика
5
Каждая строка таблицы содержит запись об одном ученике. В столб­це А записана фамилия, в столбце В имя, в столбце С класс, в столбце D  любимый предмет, в столбце Е  оценка за любимый предмет. Коли- чество записей таблицы вводит пользователь.
Выполните задание.
Напишите программу, позволяющую определить:
1. Сколько учеников любят информатику?
2. Какой процент учеников 8 класса имеют оценку за любимый пред-
мет 4 или 5?
15. Среди учеников 5−11 классов проводили социологический опрос. Результаты занесли в электронную таблицу. Ниже приведены первые пять строк таблицы:
Каждая строка таблицы содержит запись об одном ученике. В столб­це А записана фамилия, в столбце В имя, в столбце С класс, в столбце D любимый предмет, в столбце Е оценка за любимый предмет. Коли­чество записей таблицы вводит пользователь.
Выполните задание.
Напишите программу, позволяющую определить:
1. Сколько учеников любят алгебру?
2. Какой процент учеников 7 класса имеют оценку 3 за любимый
предмет?
31
Режим
Обозначение
'r'
открытие на чтение (значение по умолчанию)
'w'
открытие на запись, содержимое файла удаляется, если файла не существует, создается новый
Часто необходимо сохранить какие-либо данные на диске. Для этого
существуют два способа:
- сохранение в файл (для информации небольшого объема),
- сохранение в базу данных (если объем велик). Встроенные средства python для работы с файлами:
- открытие,
- закрытие,
- чтение,
- запись. Рассмотрим встроенные возможности для работы с файлами в питон.
4. РАБОТА С ФАЙЛАМИ В ПИТОН
4.1. Открытие файла
Прежде, чем работать с файлом, его необходимо открыть. Это можно сделать с помощью встроенной функции open. Эта функция создает объ­ект файла:
f = open(’Путь к файлу’, 'Режим')
Параметры функции open:
- имя файла (путь к файлу). Путь к файлу может быть относительным
или абсолютным,
- режим, в котором будет открыт файл,
- аргумент, encoding, используется в текстовом режиме чтения файла.
Этот аргумент задает кодировку.
Параметр «Режим» может принимать несколько значений (табл.2). Режимы могут быть объединены, то есть, к примеру, 'rb' - чтение в дво­ичном режиме. По умолчанию режим равен 'rt' – открытие файла на чте­ние в текстовом режиме.
Таблица 2
Режимы открытия файла
32
4.1. Открытие файла
Режим
Обозначение
'x'
открытие на запись, если файла не существует, иначе исключение
'a'
открытие на дозапись, информация добавляется в конец файла
'b'
открытие в двоичном режиме
't'
открытие в текстовом режиме (является значением по умолчанию)
'+'
открытие на чтение и запись
Окончание таблицы 2
Параметр «Путь к файлу» позволяет задать относительный или абсо­лютный путь к файлу. Ниже представлен пример задания относительного и абсолютного пути к файлу.
f = open('text.txt') # относительный путь
f = open('С:/123//text.txt') # абсолютный путь
Существует возможность преобразовать относительный путь в абсо­лютный. Для этого необходимо воспользоваться функцией abspath() из модуля os.path. Функции модуля os.path. будут рассмотрены в следующей главе этого пособия. Возможны следующие варианты исполь­зования этой функции:
1. Задать путь файла в текущем рабочем каталоге,
2. Задать путь файла на уровень ниже рабочего каталога (во вло-
женной папке).
os.path.abspath(r’Info/file.txt’)
3. Поместить файл на уровень выше рабочего каталога.
os.path.abspath(r’../file.txt’)
4. Если путь файла начинается с символа / (слэш), то путь определя-
ется относительно корня диска. В этом случае место рабочего (текущего каталога) не имеет значения.
os.path.abspath(r’/info/math/file.txt’)
33
4. Работа с файлами в Питон
4.2. Методы для работы с файлами
Для осуществления записи, чтения и закрытия файла необходимо
воспользоваться соответствующими методами.
f.write – метод записывает строку (объект типа str) или последова­тельность байтов в файл. Для записи последовательности байтов необхо­димо открыть файл в бинарном режиме ‘b’.
f.writelines(Последовательность) записывает последовательность в файл.
f.read(Количество) – метод, читающий весь файл целиком, если был вызван без аргументов, и n символов, если был вызван с аргументом (це­лым числом n).
Пример чтения данных из файла. В данном случае чтение осуществ­ляется сплошным текстом без разделения на строки или абзацы:
f = open('text.txt') f.read(1) 'H' f.read() 'ello world!\nThe end.\n\n'
Также можно прочитать файл построчно, воспользовавшись циклом for:
f = open('text.txt') for line in f: line
'Hello world!\n' '\n' 'The end.\n' '\n'
34
4.2. Методы для работы с файлами
f.readline([Количество]) – считывание из файла одной строки при каждом вызове. Если в необязательном параметре «Количество» указано число, считывание будет выполняться до тех пор, пока не встретится сим­вол новой строки (/n), символ конца файла или из файла не будет прочи­тано указанное количество символов.
f.readlines() – считывает все содержимое файла в список (массив), где каждый элемент списка будет содержать одну строку, включая сим­вол перевода каретки.
f.close() Закрывает файл. Обязательное действие, которое необхо- димо выполнить после работы с файлом.
Существую и другие стандартные методы для работы с файлами [26].
35
5. МОДУЛИ В ПИТОН
Модулем в языке Python называется любой файл с программой.
Обычно модули включают в себя функции, операторы и классы, относя­щиеся к одной тематике. Поэтому название модулям принято давать осмысленное, связанное с их внутренним наполнением. Например, мо­дуль с классами «Столы», «Стулья» и «Шкафы» логично назвать «Ме­бель».
Модули могут включать в себя наборы операторов, отдельные функ-
ции, классы.
Существует ряд свободно распространяемых модулей (библиотек), которые можно скачать в Интернете, установить на компьютер и исполь­зовать в своих программах [9, 10].
Ниже приведены некоторые группы модулей для языка Питон и их краткое описание:
Модули для работы с файлами:
– os предоставляет множество функций для работы с ОС. Работа
функций, как правило, не зависит от ОС, поэтому программы остаются кросплатформенными,
– os.path является вложенным модулем в модуль os, и реализует не­которые полезные функции на работы с путями.
– glob находит все пути, соответствующие заданному шаблону. Пра­вила задания шаблона стандартные:
"*" произвольное количество символов,
"?" один символ
[] - диапазоны символов.
– JSON (JavaScript Object Notation) - простой формат обмена данны­ми, основанный на подмножестве синтаксиса JavaScript. Модуль json поз­воляет кодировать и декодировать данные в удобном формате.
– shutil содержит набор функций высокого уровня для обработки файлов, групп файлов, и папок. Часто используется совместно с моду­лем os.
– pickle – предназначен для сохранения и чтения любого типа объек­та на диске в любой момент.
36
5. Модули в Питон
– struct стандартный модуль, который позволяет преобразовывать объекты Питон в структуры C в виде строк в бинарном формате и обрат­но. Эти возможности могут быть использованы для чтения и сохранения в двоичном формате.
Математические модули:
– math предоставляет множество функций для работы с числами, яв­ляется одним из важнейших в Питон,
– cmath – предоставляет функции для работы с комплексными чис­лами,
– fractions предоставляет поддержку рациональных чисел [11].
Криптографические модули:
– hashlib модуль стандартной библиотеки Python, реализующий раз­личные алгоритмы шифрования,
– Pycrypto – дополнительный (сторониий) модуль, в котором реали­зованы различные схемы шифрования,
– Сryptography – дополнительный (сторониий) модуль, в котором реализованы различные схемы шифрования.
Модули для создания графического интерфейса:
– PyQT (http://qt.nokia.com/)
– Tkinter, wxPython (http://wxpython.org/)
– PySide (http://www.pyside.org/)
– PyGTK (http://www.pygtk.org)
– PyWin32 (http://sourceforge.net/projects/pywin32/)
– pyFLTK (http://pyfltk.sourceforge.net/).
Подключить какой-либо модуль возможно несколькими способами:
1. Полностью импортировать весь модуль:
import <имя модуля>
2. Импортировав отдельные или все (*) функции этого модуля:
from <имя модуля> import *
37
6. МОДУЛЬ OS ДЛЯ РАБОТЫ В ФАЙЛОВОЙ СИСТЕМЕ
Модуль os предоставляет кроссплатформенный интерфейс к часто используемым службам операционной системы. Для этого он отыскивает встроенный модуль, зависящий от типа операционной системы, такой как nt или posix, и экспортирует функции и данные, находящиеся в нем.
Модуль os.path является вложенным модулем в модуль os, и ис­пользуется для работы с путями в файловой системе в зависимости от платформы. Он импортируется модулем os. Или может быть загружен с помощью инструкции import os.path.
Основные функции для работы с файлами
Для переименования и удаления файлов предназначены следующие функции из модуля OS:
1. rename(Старое_Имя, Новое_Имя) – переименовывает файл. Если исходный файл отсутствует, или новое имя файла уже существует, возбуждается исключение.
import os
# переименование файла
os.rename("AAA\\file.txt", AAA\\super_file.txt")
2. exists(Путь) – проверяет указанный путь на существование.
import os.path print "Проверка, существует ли заданный путь" print(
os.path.exists('c:\\python26\\LICENSE2.txt'))
3. getsize(Путь_к_файлу) – возвращает размер файла в байтах. Если файл не существует, возбуждается исключение.
import os.path print "Получение размера данного файла" print
os.path.getsize('c:\\python26\\LICENSE.txt')
38
6. Модуль OS для работы в файловой системе
4.remove(Путь_к_файлу) и unlink(Путь к файлу) – позво­ляют удалить файл. Если файл удалить нельзя, то возбуждается исключе­ние.
import os
# удаление файла
os.remove("AAA\\super_file.txt")
Функции для работы с каталогами
Для работы с каталогами используются следующие функции из мо-
дуля os:
1. getcwd() – возвращает текущий рабочий каталог.
import os print ("Получение текущей рабочей директории про- цесса") print (os.getcwd())
2. chdir(Имя_каталога) – делает указанный каталог текущим.
import os print ("Изменение текущей рабочей директории про-
цесса")
os.chdir(r'C:\Users') print (os.getcwd())
os.chdir(r'D:')
3. mkdir(Имя_каталога[, Права_доступа]) – создает новый каталог с правами доступа, указанными во втором параметре
import os print ("Создаем директорию ААА") os.mkdir("AAA")
39
6. Модуль OS для работы в файловой системе
4
. makedirs(
Путь[, Права_доступа])
Функция рекурсивного создания каталога. Похожа на функцию mkdir(), но создает все промежуточные каталоги, содержащие конечный каталог. Если конечный каталог в пути path уже существует или не может быть создан, возбуждает исключение OSError.
import os
os.makedirs(r'c:/aaa/bbb/eee') #Создает три каталога на диске С (aaa, bbb, eee) один внутри другого
import os
os.makedirs(r’/aaa/bbb/eee') #Создает три каталога на
диске С (aaa, bbb, eee) один внутри другого. Аналогично предыдущему примеру.
import os
os.makedirs(r'aaa/bbb/eee') #Создает три каталога в те-
кущей директории (aaa, bbb, eee) один внутри другого
5. rmdir(Имя_каталога) – удаляет пустой каталог. Если каталог
не пустой или его не существует в системе, то возбуждается исключение.
import os os.remove("AAA\\super_file.txt")
# удаление пустого каталога
os.rmdir("AAA")
6. removedirs(Путь)
Функция рекурсивного удаления каталогов. Действует так же, как функция rmdir(), за исключением того, что в случае успешного удаления конечного каталога она последовательно начнет удалять каталоги в пути path, начиная с самого правого, пока не будут удалены все указанные каталоги, либо пока не будет встречена ошибка (которая игнорируется, потому что обычно появление ошибки означает, что родительский каталог не пуст). Если конечный каталог в пути path не может быть удален, возбуждает исключение OSError.
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]