М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет144/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   140   141   142   143   144   145   146   147   ...   334
Байланысты:
Изучаем Python

file_reader.py

filename = 'pi_digits.txt'


200
Глава 10 • Файлы и исключения

with open(filename) as file_object:

for line in file_object:
print(line)
В точке 

имя файла, из которого читается информация, сохраняется в перемен-
ной 
filename
. Это стандартный прием при работе с файлами: так как переменная 
filename
не представляет конкретный файл (это всего лишь строка, которая со-
общает Python, где найти файл), вы сможете легко заменить 
'pi_digits.txt'
именем другого файла, с которым вы собираетесь работать. После вызова 
open()
объект, представляющий файл и его содержимое, сохраняется в переменной 
file_
object

. Мы снова используем синтаксис 
with
, чтобы поручить Python открывать 
и закрывать файл в нужный момент. Для просмотра содержимого все строки файла 
перебираются в цикле 
for
по объекту файла 

.
На этот раз пустых строк оказывается еще больше:
3.1415926535
8979323846
2643383279
Пустые строки появляются из-за того, что каждая строка в текстовом файле завер-
шается невидимым символом новой строки. Команда 
print
добавляет свой символ 
новой строки при каждом вызове, поэтому в результате каждая строка завершается 
двумя
символами новой строки: один прочитан из файла, а другой добавлен коман-
дой 
print
. Вызов 
rstrip()
в команде 
print
удаляет лишние пустые строки:
filename = 'pi_digits.txt'
with open(filename) as file_object:
for line in file_object:
print(line.rstrip())
Теперь вывод снова соответствует содержимому файла:
3.1415926535
8979323846
2643383279
Создание списка строк по содержимому файла
При использовании 
with
объект файла, возвращаемый вызовом 
open()
, доступен 
только в пределах содержащего его блока 
with
. Если вы хотите, чтобы содержимое 
файла оставалось доступным за пределами блока 
with
, сохраните строки файла 
в списке внутри блока и в дальнейшем работайте с полученным списком. Одни 
части файла можно обработать немедленно, а другие отложить для обработки 
в будущем.


Чтение из файла
201
В следующем примере строки 
pi_digits .txt
сохраняются в списке в блоке 
with
, после 
чего выводятся за пределами этого блока:
filename = 'pi_digits.txt'
with open(filename) as file_object:

lines = file_object.readlines()

for line in lines:
print(line.rstrip())
В точке 

метод 
readlines()
последовательно читает каждую строку из файла 
и сохраняет ее в списке. Список сохраняется в переменной 
lines
, с которой можно 
продолжить работу после завершения блока 
with
. В точке 

в простом цикле 
for
выводятся все элементы списка 
lines
. Так как каждый элемент 
lines
соответствует 
ровно одной строке файла, вывод точно соответствует его содержимому.
Работа с содержимым файла
После того как файл будет прочитан в память, вы сможете обрабатывать данные 
так, как считаете нужным. Для начала попробуем построить одну строку со всеми 
цифрами из файла без промежуточных пропусков:


Достарыңызбен бөлісу:
1   ...   140   141   142   143   144   145   146   147   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет