Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 160

его:

fileobj = open( filename, mode)

Кратко поясню фрагменты этого вызова:

 fileobj — это объект файла, возвращаемый функцией open();

 filename — это строка, представляющая собой имя файла;

 mode — это строка, указывающая на тип файла и действия, которые вы хотите

над ним произвести.

Первая буква строки mode указывает на операцию:

 r означает чтение;

 w означает запись. Если файла не существует, он будет создан. Если файл суще-

ствует, он будет перезаписан;

 x означает запись, но только если файла еще не существует;

 a означает добавление данных в конец файла, если он существует.

Вторая буква строки mode указывает на тип файла:

 t (или ничего) означает, что файл текстовый;

 b означает, что файл бинарный.

После открытия файла вы вызываете функции для чтения или записи данных,

они будут показаны в следующих примерах.

Наконец, вам нужно закрыть файл.

Создадим файл, содержащий одну строку, в одной программе и считаем его

в другой.

Запись в текстовый файл

с помощью функции write()

По какой-то причине существует не так уж много лимериков о специальной теории

относительности. В качестве источника данных придется использовать всего один:

>>> poem = '''There was a young lady named Bright,

... Whose speed was far faster than light;

... She started one day

... In a relative way,

... And returned on the previous night.'''

>>> len(poem)

150

212

Глава 8. Данные должны куда-то попадать

Следующий код записывает это стихотворение в файл 'relativity' с помощью

всего одного вызова:

>>> fout = open('relativity', 'wt')

>>> fout.write(poem)

150

>>> fout.close()

Функция write() возвращает число записанных байтов. Она не добавляет ни-

каких пробелов или символов новой строки, как это делает функция print(). С по-

мощью функции print() вы также можете записывать данные в текстовый файл:

>>> fout = open('relativity', 'wt')

>>> print(poem, file=fout)

>>> fout.close()

Отсюда возникает вопрос: какую функцию использовать — write() или print()?

По умолчанию функция print() добавляет пробел после каждого аргумента и сим-

вол новой строки в конце. В предыдущем примере она добавила символ новой

строки в файл relativity. Для того чтобы функция print() работала как функция