为什么我的文件被覆盖?

问题描述:

当蟒蛇使用此代码:为什么我的文件被覆盖?

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

我的文件总是被覆盖。而且,只有在它一条线,像这样:

[周五02九月十六时30分56秒2011]状态

为什么会覆盖掉了?

+1

就是你想说什么像什么。 “我使用Python 2.7在Windows XP 我做两个文件写道: {代码示例} 为什么是只显示第一次写入的文件,但不是第二次?“ 因为该代码示例的重要。 – deworde

+0

代码:\t \t \t F =开放( 'ping.log', 'R +') \t \t \t f.write( “[” + time.ctime()+ “]” + “状态”) \t \t \t f.close() – Zygimantas

+0

File:[Fri Sep 02 16:30:56 2011] Status – Zygimantas

它的失败,因为你每次都有效地重新创建文件要覆盖前n个字节的每一次。如果你写了更少的字节,你会看到“旧”信息仍然存在。

您需要打开文件 “追加”

'A' 打开文件以追加

Source

+1

不重新创建,它只是覆盖前N个字节。如果里面有更多的内容,它会显示。 –

r+将初始文件指针开始。无论是寻求到底还是使用a模式。

检查this question。与“一”模式打开该文件:

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

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

第一个参数是包含了文件名的字符串。第二 参数是包含描述,其中该文件将被使用的方式 几个字符另一个字符串。模式可以是“r”,此文件将 只能读,“W”为只写(具有相同 名称的现有文件将被删除),和“a”打开了附加的文件;任何数据 写入到文件被自动添加到末尾。 'r +'打开 文件以进行读写操作。模式参数是可选的;如果省略'r' 将被假定。

所以使用

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