Основные тезисы
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")