pi_string.py
filename = 'pi_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
❶
pi_string = ''
❷
for line in lines:
pi_string += line.rstrip()
❸
print(pi_string)
print(len(pi_string))
Сначала программа открывает файл и сохраняет каждую строку цифр в списке —
точно так же, как это делалось в предыдущем примере. В точке
создается пере-
менная
pi_string
для хранения цифр числа «пи». Далее следует цикл, который
добавляет к
pi_string
каждую серию цифр, из которой удаляется символ новой
строки
. В точке
программа выводит строку и ее длину:
3.1415926535 8979323846 2643383279
36
Переменная
pi_string
содержит пропуски, которые присутствовали в начале
каждой строки цифр. Чтобы удалить их, достаточно использовать
strip()
вместо
rstrip()
:
202
Глава 10 • Файлы и исключения
...
for line in lines:
pi_string += line.strip()
print(pi_string)
print(len(pi_string))
В итоге мы получаем строку, содержащую значение «пи» с точностью до 30 знаков.
Длина строки равна 32 символам, потому что в нее также включается начальная
цифра 3 и точка:
3.141592653589793238462643383279
32
ПРИМЕЧАНИЕ
Читая данные из текстового файла, Python интерпретирует весь текст
в файле как строку . Если вы читаете из текстового файла число и хотите работать с ним
в числовом контексте, преобразуйте его в целое число функцией
int()
или в веще-
ственное число функцией
float()
.
Большие файлы: миллион цифр
До настоящего момента мы ограничивались анализом текстового файла, кото-
рый состоял всего из трех строк, но код этих примеров будет работать и с много
большими файлами. Начиная с текстового файла, содержащего значение «пи» до
1 000 000 знаков (вместо 30), вы сможете создать одну строку, которая содержит
все эти цифры. Изменять программу вообще не придется — достаточно передать ей
другой файл. Также мы ограничимся выводом первых 50 цифр, чтобы не пришлось
ждать, пока в терминале не прокрутится миллион знаков:
pi_string.py
filename = 'pi_million_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
pi_string = ''
for line in lines:
pi_string += line.strip()
print(f"{pi_string[:52]}...")
print(len(pi_string))
Из выходных данных видно, что строка действительно содержит значение «пи»
с точностью до 1 000 000 знаков:
3.14159265358979323846264338327950288419716939937510...
1000002
Python не устанавливает никаких ограничений на длину данных, с которыми вы
можете работать. Она ограничивается разве что объемом памяти вашей системы.
Чтение из файла
Достарыңызбен бөлісу: |