Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Язык программирования высокого уровня Python. Функции, структуры данных, дополнительные модули. Учебное пособие
.pdf
Задания для закрепления темы «Операции в 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() Закрывает файл. Обязательное действие, которое необхо-
димо выполнить после работы с файлом.
Существую и другие стандартные методы для работы с файлами
[26].
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
