Помогите понять как работает функция file

программирование Linux python

Написал код

>>> myfile = file(r"/tmp/tmpfile.cvs", "w+")
>>> myfile.write('test')
>>> myfile.read()

Из прочитанного руководства параметр "w+" открывает файл в режиме чтения и записи.
Пишу
>>> myfile.write('test')
затем
>>> myfile.read()
>>> ''
ответ пустая строка


Еще раз пишу
>>> myfile = file(r"/tmp/tmpfile.cvs", "w+")
затем сразу
>>> myfile.read()
>>> ''
тоже пустая строка

Еще раз
>>> myfile = file(r"/tmp/tmpfile.cvs", "w+")
>>> myfile.write('test')
затем повторно открываю
>>> myfile = file(r"/tmp/tmpfile.cvs", "w+")
>>> myfile.read()
>>> 'test'
Ответ получен. Но попробую еще раз подряд прочитать его
>>> myfile.read()
>>> ''
Опять пустой файл...

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

Примечание:
none7, спасибо вам огромное! Я изучаю питон и попутно программку пишу, возникают моменты на которые объяснения не могу найти =) Спасибо, что не поленились ответить.
Ответы:
Ты совсем не учитываешь file offset. File offset это смещение в файле куда будут записаны или откуда будут прочитаны данные, при открытии файла с флагом w+ file offset устанавливается в конец файла, при записи данных в файл file offset увеличивается на соответствующее количество записанных байт. Если длина файла 10 байт и file offset установлен в 10, что ему читать? Второе важное замечание это буфферизация, данные могут не оказаться в файле пока он не будет закрыт или не будет выполнена функция flush.


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.