如果我在脚本仍在执行文件 I/O 操作时突然关闭脚本,会发生什么情况?

2024-03-17

这是我的问题:我正在编写一个脚本来检查我的网站是否运行正常,基本思想是每隔 5 分钟左右获取服务器响应时间和类似的东西,并且脚本每次检查后都会记录信息服务器状态。我知道在检查/写入日志的过程中关闭脚本是没有好处的,但我很好奇如果有很多服务器需要检查并且您必须频繁地执行文件 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”(不完整的行)或完整的行或什至未添加的行?

希望有人知道答案。


根据python io 文档 http://docs.python.org/library/io.html,缓冲是根据 open 函数的缓冲参数来处理的。

在这种情况下,默认行为将是设备的块大小或 io.DEFAULT_BUFFER_SIZE(如果无法确定块大小)。这可能大约是 4096 字节。

简而言之,那个例子什么也不会写。如果您写入的内容足够长,以至于缓冲区被写入一次或两次,那么您将写入缓冲区大小的倍数。并且您始终可以使用flush()手动刷新缓冲区。

(如果您将缓冲指定为 0 并且将文件模式指定为二进制,您将得到“This i”。不过,这是唯一的方法)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我在脚本仍在执行文件 I/O 操作时突然关闭脚本,会发生什么情况? 的相关文章

随机推荐