Рассмотрим встроенные средства python для работы с файлами: открытие, закрытие, чтение и запись.
Прежде всего, необходимо открыть файл. Для этого существует встроенная функция open:
f = open('text.txt', 'r')
Первый аргумент функции – имя файла. Путь к файлу может быть относительным или абсолютным.
Второй аргумент, это режим, в котором мы будем открывать файл. Режимы могут быть объединены, то есть, к примеру, ‘rb’ — чтение в
двоичном режиме. По умолчанию режим равен ‘rt’.
И последний аргумент, encoding, нужен только в текстовом режиме чтения файла. Этот аргумент задает кодировку.
Таблица 5
|
Режимы |
|
|
|
|
Режим |
Описание |
|
|
'r' |
открытие на чтение (является |
|
значением по умолчанию) |
|
|
w' |
открытие на запись, содержимое |
|
файла удаляется, если файла не |
|
существует, создается новый |
|
|
'a' |
открытие на дозапись, информация |
|
добавляется в конец файла |
|
|
'b' |
открытие в двоичном режиме |
|
|
't' |
открытие в текстовом режиме |
|
(является значением по умолчанию) |
|
|
'+' |
открытие на чтение и запись |
|
|
15
Таблица 6
Методы работы с файлами |
||
|
|
|
Метод |
Описание |
|
|
|
|
f.read() |
Чтение файла целиком в |
|
|
единственную строку |
|
|
|
|
f.read(N) |
Чтение следующих N |
|
|
символов (или байтов) в строку |
|
|
|
|
f.readline() |
Чтение следующей |
|
|
текстовой строки (включая |
|
|
символ конца строки) в строку |
|
|
|
|
f.readlines() |
Чтение файла целиком в |
|
|
список строк (включая символ |
|
|
конца строки) |
|
|
|
|
f.write(string) |
Запись строки символов |
|
|
(или байтов) в файл |
|
|
|
|
f.writelines(list) |
Запись всех строк из списка |
|
|
в файл |
|
|
|
|
f.close() |
Закрытие файла вручную |
|
|
(выполняется по окончании |
|
|
работы с файлом) |
|
|
|
|
f.flush() |
Выталкивает выходные |
|
|
буферы на диск, файл остается |
|
|
открытым |
|
|
|
|
|
Изменяет текущую позицию в |
|
f.seek(N) |
файле для следующей |
|
|
операции, смещая ее на N байтов |
|
|
от начала файла. |
|
|
|
|
for line in |
Итерации по файлу, построчное |
|
open(‘data’): |
чтение |
|
операции над |
|
|
line |
|
|
|
|
|
open(‘f.txt’, |
Файлы с текстом Юникода в |
|
encoding=’latin-1’) |
Python 3.0 |
|
|
|
|
open(‘f.bin’, ‘rb’) |
Чтение двоичных файлов |
|
|
|
|
16
Список
>>>l = [i for i in range(10)]
>>>l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Кортеж
Генератор кортежа возвращает не объект кортеж, а объект-генератор, что позволяет существенно экономить занимаемую кортежем память:
>>>t = (i for i in range(10))
>>>t
<generator object <genexpr> at 0x106d05cd0>
>>>t.__sizeof__()
48
>>>l.__sizeof__()
168
Словарь
>>>d = {i : i+i for i in range(7)}
>>>d
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12}
Множество
>>>s = {i for i in range(10)}
>>>s
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Генераторы особенно удобно использовать со встроенными функциями,
такими как sum(), min(), max():
# подсчитаем максимальную длину строки в файле
>>>max(len(line) for line in open('text.txt') if line.strip())
1.Напишете программу с использованием 5 типов данных.
2.Выведете на экран текущий тип последней переменной.
17
3. Сложите два числа с плавающей запятой и преобразуйте результат в целочисленный.
1.Какие вы знаете типы данных Python?
2.Что такое кортежи в Python?
3.Что такое методы, изменяющие множества?
4.Как работают Списки в Python?
5.Как работают Словари в Python?
Когда мы говорим о функции, то имеем в виду фрагмент программного кода, который имеет название, и который по этому названию мы можем вызвать любом (или практически любом) месте программы. Функции - очень полезный и эффективный инструмент программирования, поскольку позволяет значительно сократить объем программного кода, сделать его понят нее и эффективнее. Короче говоря, без функций писать эффективные про граммы практически нереально. Поэтому с функциями нужно быть на "ты", особенно если речь идет о программировании в Python.
Перед тем, как функцию использовать, ее необходимо описать. Что подразумевает описание функции? Как минимум, это тот программный код , который следует выполнять при вызове функции , и, разумеется , название функции. Также функции при выполнении могут понадобиться некоторые пара метры, которые передаются функции при вызове и без которых выполнение функции невозможно. Эти параметры мы будем называть аргументами функции.
И так, для описания функции в Python необходимо:
•указать (задать) имя функции;
•описать аргументы функции;
•описать программный код функции.
Описание функции начинается с ключевого слова def. После него указывают название функции (это должен быть уникальный идентификатор, желательно со смысловой нагрузкой, состоящий из латинских букв, можно также цифр и символа подчеркивания – но с цифры имя функции начинаться не
18
может). Затем перечисляются аргументы функции. Для аргументов про сто указываются названия. Тип аргументов не указывается. Аргументы перечисляются после имени функции в круглых скобках. Если аргументов не сколько, они разделяются запятыми. Даже если аргументов у функции нет (такое тоже бывает), круглые скобки все равно указываются. Заканчивается вся эта конструкция двоеточием, и далее с новой строки следует блок команд, которые собственно и определяют программный код функции. Весь шаблон объявления функции выглядит следующим образом (жирным
шрифтом выделены ключевые элементы):
def имя_ функции (аргументы): · команды
То есть все достаточно просто и прозрачно.
Функция может возвращать результат,
а может не возвращать результат (в последнем случае имело бы смысл говорить о процедуре - но в Python все называется одним словом функция). Если функция не возвращает результат, то ее можно рассматривать как некоторую последовательность команд, которые выполняются в том месте и в то время, что и вызов функции. Если функция возвращает результат (а это может быть значение практически любого типа), то инструкцию вызова функции можно использовать в выражениях так, как если бы это была некоторая переменная. В теле функции чтобы определить то значение, которое является результатом функции, обычно используют инструкцию return. Выполнение этой инструкции, во-первых, приводит к завершению выполнения программного кода функции, а во-вторых то значение, которое указано после инструкции return, возвращается функцией в качестве результата.
Далее мы рассмотрим простой пример, в котором объявляется несколько простых функций. После объявления эти функции вызываются в программном коде для выполнения несложных действий. Соответствующий программный код представлен в листинге:
#Функция без аргументов de f your_name ( ) :
#Отображается сообщение рrint ("Добрый день!")
#Запоминается введенный пользователем текст
name=input ("Kaк Вас зовут? ")
#Результат функции return name
#Функция с одним аргументом def say_hel lo (txt):
#Отображается сообщение
print ("Здравствуйте, " , tхt+ " ! ")
# Вызываем функцию и результат записываем в переменную my_name=your_name ( )
19