Почему мой файл перезаписывается? - PullRequest
0 голосов
/ 30 августа 2011

При использовании этого кода в python:

 f = open('ping.log', 'r+')
 f.write("["+time.ctime()+"]"+"Status")
 f.close()

Мой файл всегда перезаписывается.И содержит только одну строку, например:

[Пт 02 сентября 16:30:56 2011] Статус

Почему он перезаписывается?

Ответы [ 4 ]

5 голосов
/ 30 августа 2011

Сбой, потому что вы эффективно воссоздаете файл каждый раз, когда каждый раз перезаписываете первые N байтов. Если бы вы написали меньше байтов, вы бы увидели «старую» информацию, которая все еще там.

Вам нужно открыть файл для «добавления»

'a' открывает файл для добавления

Источник

2 голосов
/ 30 августа 2011

http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files

Первый аргумент - это строка, содержащая имя файла. Второй Аргумент - это другая строка, содержащая несколько символов, описывающих способ, которым файл будет использоваться. режим может быть 'r', когда файл будет только для чтения, 'w' только для записи (существующий файл с тем же имя будет удалено), и «a» открывает файл для добавления; любые данные записанный в файл автоматически добавляется в конец. «R +» открывает файл для чтения и записи. Аргумент mode является необязательным; 'р' предполагается, если он опущен.

, поэтому используйте

f = open('ping.log', 'a')
f.write("["+time.ctime()+"]"+"Status")
f.close()
2 голосов
/ 30 августа 2011

Отметьте этот вопрос .Откройте файл в режиме «а»:

f = open("ping.log","a")
...
2 голосов
/ 30 августа 2011

r+ устанавливает начальный указатель файла на начало.Либо стремитесь к концу, либо используйте режим a.

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