Как открыть файл для чтения и записи? - PullRequest
164 голосов
/ 11 июля 2011

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

В качестве обходного пути я открываю файл для записи, закрываю его, а затем снова открываю для чтения. Но есть ли способ открыть файл для и чтения и записи?

Ответы [ 3 ]

230 голосов
/ 12 апреля 2013

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

with open(filename, "r+") as f:
    data = f.read()
    f.seek(0)
    f.write(output)
    f.truncate()
41 голосов
/ 11 июля 2011

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

20 голосов
/ 11 июля 2011

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

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

Где:

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

И:

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

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

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

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

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