Основные тезисы
1. Чтобы прочитать содержимое файла, можно использовать следующие методы потока:
read(number)
– считываетnumber
символов/байтов из файла и возвращает их в виде строки; может читать весь файл сразу;readline()
– читает одну строку из текстового файла;readlines(number)
– читаетnumber
строк из текстового файла; умеет читать сразу все строки;readinto(bytearray)
– читает байты из файла и заполняет имиbytearray
;
2. Чтобы записать новое содержимое в файл, можно использовать следующие методы потока:
write(string)
– записываетstring
в текстовый файл;write(bytearray)
– записывает все байтыbytearray
в файл;
3. Метод open()
возвращает итерируемый объект, который можно использовать для итерации по всем строкам файла внутри цикла for
. Например:
for line in open("file", "rt"):
print(line, end='')
Код построчно копирует содержимое файла в консоль. Примечание: поток закрывается автоматически, когда достигает конца файла.
Упражнение 1
Чего мы ожидаем от метода readlines()
, когда поток связан с пустым файлом?
Упражнение 2
Для чего предназначен следующий код?
for line in open("file", "rt"):
for char in line:
if char.lower() not in "aeiouy ":
print(char, end='')
Упражнение 3
Вы собираетесь обработать растровое изображение, хранящееся в файле с именем image.png
, и хотите прочитать его содержимое целиком в переменную bytearray с именем image
. Добавьте строку в следующий код для достижения этой цели.
try:
stream = open("image.png", "rb")
# Insert a line here.
stream.close()
except IOError:
print("failed")
else:
print("success")