открытый python ('file', 'r +') дает странный результат - PullRequest
5 голосов
/ 03 февраля 2012

После прочтения некоторых сообщений кажется, что вы можете открыть файл для чтения и записи в режиме 'r +' или 'w +'. Однако попытки использовать эти режимы всегда дают мне странные результаты:

  1. Если я использую 'r +', вызову file.read (), а затем вызову file.write ('str'), будет ошибка «IOError: [Errno 0] Error»
  2. Если я использую 'r +', вызову file.write ('str'), а затем вызову file.read (), он вернет неожиданный и очень длинный контент (выглядит как внутри какого-то объекта)
  3. Если я использую 'w +', вызов file.read () вернет пустую строку

Я пытаюсь открыть файл, прочитать содержимое, изменить его и написать обратно. В настоящее время я открываю его с помощью 'r', изменяю содержимое, снова открываю его с помощью 'w' и пишу обратно. Это хороший способ сделать это?

Есть пример на http://snipt.org/zglJ0

Я использую окно 7 и Python 2.7.2

1 Ответ

5 голосов
/ 03 февраля 2012

Вам необходимо flush() при переключении между чтением и записью файла, открытого в режиме обновления. Или я думаю, что вы также можете seek(). Это вызвано странным поведением в реализации файлов Windows в Python 2.x; они исправили это в 3.x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...