FileObject read работает как write - PullRequest
       31

FileObject read работает как write

1 голос
/ 12 декабря 2011

Давайте посмотрим на простой кусок кода:

import os

f = open('test.bin', 'wb')
f.write('X')
f.close()
# test.bin - X

f = open('test.bin', 'r+b')

f.seek(0, os.SEEK_END)
f.write('AB')
# test.bin - XAB

f.seek(0, os.SEEK_SET)
f.write('Y')
# test.bin - YAB

print f.read(1)
# test.bin - YBB and prints B 0_o whhyyy?

f.close()

Почему в этом случае метод read работает как write ??
Я использую Python 2.5 и 2.7 для загрузки Windows с официального сайта.

1 Ответ

3 голосов
/ 12 декабря 2011

Если поставить

f.flush()

после того, как вы напишите «Y», последующее чтение (1) считывает правильное значение (в данном случае «A»).

Так что я предполагаю, что в windows read () не вызывает сброс буферов, а в * nix это делает.

...