- Часть I. Вводное руководство
- Глава 2. Использование интерпретатора
- 2.2. Интерпретатор и его среда
- 7.2.1. Методы объектов-файлов
7.2.1. Методы объектов-файлов
Примеры в этом разделе рассчитаны на то, что объект-файл f уже создан.
f.read(size) считывает и возвращает некоторое количество данных из файла. Аргумент size не является обязательным. Если он опущен или отрицательный, будет считано всё содержимое файла, в противном случае, будет считано не более size байт данных. По достижении конца файла, возвращается пустая строка ().
>>> f.read() # Считываем всё содержимое файла
'First line'
>>> f.read()
''
f.readline() считывает из файла одну строку. Возвращаемая строка всегда заканчивается символом новой строки (\n), за исключением последней строки файла, если файл не заканчивается символом новой строки. Это делает возвращаемое значение недвусмысленным: если readline() возвращает пустую строку — значит, достигнут конец файла, в то время как пустая строка будет представлена как '\n'.
>>> f.readline() # Считываем первую строку
'First line\n'
>>> f.readline() # Считываем вторую строку
'Second line'
>>> f.readline() # Достигли конца файла
''
f.readlines() считывает всё содержимое файла, и возвращает список строк.
>>> f.readlines()
['First line\n', 'Second line']
f.write(s) записывает содержимое строки s в файл.
>>> f.write('Last line\n')
f.tell() возвращает текущее положение в файле в байтах, отсчитываемое от начала файла. Чтобы изменить текущее положение, используйте 'f.seek(offset, from_what)'. Новое положение вычисляется путём добавления offset к точке отсчёта. Точка отсчёта выбирается в зависимости от значения аргумента from_what: 0 соответствует началу файла (используется по умолчанию, если метод вызывается с одним аргументом), 1 — текущему положению и 2 — концу файла.
>>> f=open('file.txt', 'rb+')
>>> f.write('0123456789abcdef')
>>> f.seek(5) # Перейти к 5му байту в файле
>>> f.read(1)
'5'
>>> f.seek(-3, 2) # Перейти к 3му байту с конца
>>> f.read(1)
'd'
После того, как Вы закончили все операции с файлом, закройте файл с помощью f.close(). При попытке использовать закрытый файл для операций чтения/записи генерируется исключение ValueError:
>>> f.close()
>>> f.read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file
Объекты-файлы имеют ещё несколько методов, используемых не так часто (isatty(), truncate()). Для получения о них полной информации смотрите раздел 11.7.