Файловый режим для создания + чтение + добавление + двоичный файл - PullRequest
37 голосов
/ 03 мая 2010

Мне нужно открыть файл для чтения и записи. Если файл не найден, его следует создать. Это также следует рассматривать как двоичный файл для Windows. Можете ли вы сказать мне последовательность режимов файла, которую мне нужно использовать для этого?

Я пробовал 'r + ab', но файлы не создаются, если они не найдены.

Спасибо

Ответы [ 2 ]

63 голосов
/ 03 мая 2010

Режим ab+, подразумевается r, а 'a'ppend и (' w'rite '+' 'r'ead) избыточны. Поскольку CPython (то есть обычный Python) file основан на типе C stdio FILE, вот соответствующие строки со страницы руководства fopen (3):

  • w + Открыто для чтения и письма. Файл создается, если это не так существует, в противном случае оно усекается. Поток расположен на начало файла.

  • a + Открыть для чтения и добавления (запись в конце файла). Файл создается, если это не так существовать. Начальная позиция файла для чтения в начале файл, но вывод всегда добавляется в конец файла.

С надписью "b", чтобы осчастливить DOS. Предположительно, вы хотите сделать что-то вроде этого:

>>> f = open('junk', 'ab+')
>>> f
<open file 'junk', mode 'ab+' at 0xb77e6288>
>>> f.write('hello\n')
>>> f.seek(0, os.SEEK_SET)
>>> f.readline()
'hello\n'
>>> f.write('there\n')
>>> f.seek(0, os.SEEK_SET)
>>> f.readline()
'hello\n'
>>> f.readline()
'there\n'
8 голосов
/ 03 мая 2010
open("filename", "a+b")

должно работать. Он открывает двоичный файл в режиме добавления / обновления.

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