Чтение данных из файла
Теперь, когда мы создали и записали данные в book.txt, давайте научимся читать его содержимое. Python предлагает несколько методов для чтения файлов. Мы рассмотрим наиболее распространенные из них.
Мы продолжим работать со скриптом file_io.py. Вы добавите код для чтения только что созданного файла.
Метод read()
Метод read() считывает все содержимое файла и возвращает его в виде одной строки.
Добавьте следующий код в конец вашего скрипта file_io.py. Это заставит скрипт сначала записать файл, а затем прочитать его обратно и вывести содержимое.
## Код записи из предыдущего шага должен быть выше этого
print("\n--- Чтение всего файла с помощью read() ---")
with open("book.txt", "r") as f:
content = f.read()
print(content)
Сохраните файл и запустите его из терминала:
python ~/project/file_io.py
Теперь вывод будет включать содержимое book.txt, напечатанное в консоли:
--- Чтение всего файла с помощью read() ---
Bed before bright moonlight,
Suspected to be frost on the ground.
Head held high, gazing at the bright moon,
Head bowed low, thinking of my homeland.
Итерация по строкам
Более эффективный с точки зрения памяти способ чтения файла, особенно большого, — это обработка его построчно. Вы можете сделать это, выполнив итерацию непосредственно по файловому объекту в цикле for.
Теперь добавьте этот следующий блок кода в file_io.py:
print("\n--- Чтение файла построчно ---")
with open("book.txt", "r") as f:
for line in f:
print(line, end='')
Здесь end='' в функции print() предотвращает добавление лишнего символа новой строки, поскольку каждая строка (line), считанная из файла, уже заканчивается символом новой строки (\n).
Сохраните и снова запустите скрипт:
python ~/project/file_io.py
Вывод для этого раздела будет идентичен выводу метода read(), но внутренняя процедура отличается: считывается по одной строке за раз.
Метод readlines()
Метод readlines() считывает все строки из файла и возвращает их в виде списка строк.
Наконец, добавьте этот последний блок кода в file_io.py:
print("\n\n--- Чтение всех строк с помощью readlines() ---")
with open("book.txt", "r") as f:
all_lines = f.readlines()
print(all_lines)
Сохраните и запустите скрипт в последний раз:
python ~/project/file_io.py
Вывод для этого раздела будет представлять собой список Python, где каждый элемент — это строка, соответствующая строке из файла:
--- Чтение всех строк с помощью readlines() ---
['Bed before bright moonlight,\n', 'Suspected to be frost on the ground.\n', 'Head held high, gazing at the bright moon,\n', 'Head bowed low, thinking of my homeland.']
Теперь вы попрактиковались в использовании основных методов для записи в файлы и чтения из них в Python.