Your birthday appears in the first million digits of pi!

Оказывается, мой день рождения встречается среди цифр «пи»! После того как данные будут прочитаны из файла, вы сможете делать с ними все, что сочтете нужным.

Упражнения

10-1. Изучение Python: откройте пустой файл в текстовом редакторе и напишите несколько строк текста о возможностях Python. Каждая строка должна начинаться с фразы: «In Python you can…» Сохраните файл под именем learning_python.txt в каталоге, использованном для примеров этой главы. Напишите программу, которая читает файл и выводит текст три раза: с чтением всего файла, с перебором строк объекта файла и с сохранением строк в списке с последующим выводом списка вне блока with.

10-2. Изучение C: метод replace() может использоваться для замены любого слова в строке другим словом. В следующем примере слово ‘dog’ заменяется словом ‘cat’:

>>> message = "I really like dogs."

>>> message.replace('dog', 'cat')

'I really like cats.'

Прочитайте каждую строку из только что созданного файла learning_python.txt и замените слово Python названием другого языка, например C. Выведите каждую измененную строку на экран.

<p>Запись в файл</p>

Один из простейших способов сохранения данных — запись в файл. Текст, записанный в файл, останется доступным и после закрытия терминала с выводом вашей программы. Вы сможете проанализировать результаты после завершения программы или передать свои файлы другим. Вы также сможете написать программы, которые снова читают сохраненный текст в память и работают с ним.

<p>Запись в пустой файл</p>

Чтобы записать текст в файл, необходимо вызвать open() со вторым аргументом, который сообщает Python, что вы собираетесь записывать данные в файл. Чтобы увидеть, как это делается, напишем простое сообщение и сохраним его в файле (вместо того чтобы просто вывести на экран):

write_message.py

filename = 'programming.txt'

(1) with open(filename, 'w') as file_object:

(2) . .file_object.write("I love programming.")

При вызове open() в этом примере передаются два аргумента (1) . Первый аргумент, как и прежде, содержит имя открываемого файла. Второй аргумент 'w' сообщает Python, что файл должен быть открыт в режиме записи. Файлы можно открывать в режиме чтения ('r'), записи ('w'), присоединения ('a') или в режиме, допускающем как чтение, так и запись в файл ('r+'). Если аргумент режима не указан, Python по умолчанию открывает файл в режиме только для чтения.

Если файл, открываемый для записи, еще не существует, функция open() автоматически создает его. Будьте внимательны, открывая файл в режиме записи ('w'): если файл существует, то Python уничтожит его данные перед возвращением объекта файла.

В точке (2) метод write() используется с объектом файла для записи строки в файл. Программа не выводит данные на терминал, но, открыв файл programming.txt, вы увидите в нем одну строку:

programming.txt

I love programming.

Этот файл ничем не отличается от любого другого текстового файла на вашем компьютере. Его можно открыть, записать в него новый текст, скопировать/вставить текст и т.д.

примечание

Python может записывать в текстовые файлы только строковые данные. Если вы захотите сохранить в текстовом файле числовую информацию, данные придется предварительно преобразовать в строки функцией str().

<p>Многострочная запись</p>

Функция write() не добавляет символы новой строки в записываемый текст. А это означает, что если вы записываете сразу несколько строк без включения символов новой строки, полученный файл может выглядеть не так, как вы рассчитывали:

filename = 'programming.txt'

with open(filename, 'w') as file_object:

file_object.write("I love programming.")

. .file_object.write("I love creating new games.")

Открыв файл programming.txt, вы увидите, что две строки «склеились»:

I love programming.I love creating new games.

Если включить символы новой строки в команды write(), текст будет состоять из двух строк:

filename = 'programming.txt'

with open(filename, 'w') as file_object:

. .file_object.write("I love programming.\n")

. .file_object.write("I love creating new games.\n")

Результат выглядит так:

I love programming.

I love creating new games.

Для форматирования вывода также можно использовать пробелы, символы табуляции и пустые строки по аналогии с тем, как это делалось с выводом на терминал.

<p>Присоединение данных к файлу</p>

Если вы хотите добавить в файл новые данные вместо того, чтобы перезаписывать существующее содержимое, откройте файл в режиме присоединения. В этом случае Python не уничтожает содержимое файла перед возвращением объекта файла. Все строки, выводимые в файл, будут добавлены в конец файла. Если файл еще не существует, то Python автоматически создаст пустой файл.

Изменим программу write_message.py и дополним существующий файл programming.txt новыми данными:

write_message.py

filename = 'programming.txt'

(1) with open(filename, 'a') as file_object:

(2) . .file_object.write("I also love finding meaning in large datasets.\n")

Перейти на страницу:

Все книги серии Библиотека программиста

Похожие книги