Открыть файл для чтения и записи?

Есть ли способ открыть файл для чтения и записи? Я думал, что "r +" для этого. Поскольку я работаю над двоичными файлами, я пробовал режим "r + b", но я получаю сообщение об ошибке, что файл не открыт для чтения.

Ответ 1

Здесь вы читаете файл, а затем записываете его (перезаписываете любые существующие данные), не закрывая и не открывая:

with open(filename, "r+") as f:
    data = f.read()
    f.seek(0)
    f.write(output)
    f.truncate()

Ответ 2

r+ - это канонический режим для чтения и записи одновременно. Это не отличается от использования системного вызова fopen(), поскольку file()/open() - это всего лишь крошечная оболочка вокруг этого вызова операционной системы.

Ответ 3

Я пробовал что-то вроде этого и работает как ожидалось:

f = open("c:\\log.log", 'r+b')
f.write("\x5F\x9D\x3E")
f.read(100)
f.close()

Где:

f.read(size) - Чтобы прочитать содержимое файлов, вызовите f.read(size), который читает некоторое количество данных и возвращает его как строку.

и

f.write(string) записывает содержимое строки в файл, возвращая Отсутствуют.

Также, если вы откроете учебник Python о чтении и записи файлов, вы обнаружите, что:

'r +' открывает файл для чтения и записи.

В Windows, 'b', добавленный в режим, открывает файл в двоичном режиме, поэтому существуют также такие режимы, как "rb", "wb" и "r + b".