为什么我的文件被覆盖?

时间:2011-08-30 13:34:17

标签: python file-io

在python中使用此代码时:

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

我的文件总是被覆盖。并且只有一行,如下所示:

  

[Fri Sep 02 16:30:56 2011]状态

为什么会被覆盖?

4 个答案:

答案 0 :(得分:5)

它失败了,因为每次重写前N个字节时,每次都有效地重新创建文件。如果你写了更少的字节,你会看到“旧的”信息仍在那里。

您需要打开“追加”文件

  

'a'打开附加文件

Source

答案 1 :(得分:2)

r+将初始文件指针设置为开头。寻求结束或使用a模式。

答案 2 :(得分:2)

检查this question。使用“a”模式打开文件:

f = open("ping.log","a")
...

答案 3 :(得分:2)

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

  

第一个参数是包含文件名的字符串。第二   argument是另一个字符串,包含一些描述该字符的字符   将使用该文件的方式。当文件出现时,mode可以是'r'   只读,'w'仅用于写入(具有相同的现有文件)   名称将被删除),和'a'打开文件以便追加; 任何数据   写入文件会自动添加到文件末尾。 'r +'打开了   阅读和写作的文件。 mode参数是可选的; 'R'   将被假设,如果它被省略。

所以使用

f = open('ping.log', 'a')
f.write("["+time.ctime()+"]"+"Status")
f.close()
相关问题