2011-01-06 93 views
3

这里是我的问题:我正在写一个脚本来检查,如果我的网站上运行的所有的权利,其基本思想是让服务器响应时间以及类似的东西,每5分钟左右,并且脚本后,每次登录的信息检查服务器状态。我知道这是没有好关闭脚本的时候,它在检查/写日志的中间,但我如果有大量的服务器来检查好奇,你也必须做的I/O非常频繁,会发生什么情况的文件如果你突然关闭脚本?如果我在执行文件I/O操作时突然关闭脚本,会发生什么情况?

好了,下面是一个例子:

while True: 
    DemoFile = open("DemoFile.txt", "a") 
    DemoFile.write("This is a test!") 
    DemoFile.close() 

    time.sleep(30) 

如果我不小心关闭脚本的时候,这条线DemoFile.write("This is a test!")运行,你会在我的DemoFile.txt得到什么?我是否收到“This i”(一个不完整的行)或完整的行或行甚至没有添加?

希望有人知道答案。

+0

取决于操作系统上。 – ismail 2011-01-06 14:30:56

+0

@İsmail'cartman'Dönmez:win XP会发生什么? – Shane 2011-01-06 14:35:10

回答

2

按照python io documentation,缓冲剂根据缓冲参数到打开函数处理。

在这种情况下,缺省行为是,如果不能确定的块大小为器件的块大小或io.DEFAULT_BUFFER_SIZE。这大概是4096字节。

总之,那个例子什么都不会写。如果你写的东西足够长,以至于缓冲区被写入一次或两次,你就可以写入多个缓冲区大小。你总是可以用flush()手动刷新缓冲区。

(如果指定缓存为0,文件模式为二进制,你会得到“这是我”,这是唯一的办法,虽然)

由于@sven指出,蟒蛇是不是做缓冲。当程序结束时,所有打开的文件描述符都被操作系统关闭并刷新。

相关问题