我打开了两个命令提示符,并在两个命令提示符中都启动了python 3.7解释器。 我可以在两个提示符下打开相同的文件,也可以交替关闭它们,我发现每当我使用write()写入文件时,它实际上就会写入缓冲区,然后当文件关闭时,它将写入缓冲区中的所有内容流中的数据,将覆盖先前流中写入的数据。我不明白我没有收到任何错误。 有谁知道内部正在发生什么?
答案 0 :(得分:0)
当您打开每个文件时(在'w'
模式下,每个文件对象都指向文件中的位置0
。如果您从一个进程中写入10个字符,然后从另一个进程中写入5个字符,则第一次写入的前5个字符将被第二次写入替换。试试:
# shell 1 # shell 2
f = open('test.txt', 'w') f = open('test.txt', 'w')
f.write("a"*10)
f.write("b"*5)
f.close()
f.close()
最终文件应为bbbbbaaaaa
如here所述,除非另行指定,否则Python会将缓冲逻辑移交给文件系统。