用多个流写入一个文件

时间:2018-08-10 15:12:54

标签: python file-handling

我打开了两个命令提示符,并在两个命令提示符中都启动了python 3.7解释器。 我可以在两个提示符下打开相同的文件,也可以交替关闭它们,我发现每当我使用write()写入文件时,它实际上就会写入缓冲区,然后当文件关闭时,它将写入缓冲区中的所有内容流中的数据,将覆盖先前流中写入的数据。我不明白我没有收到任何错误。 有谁知道内部正在发生什么?

1 个答案:

答案 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会将缓冲逻辑移交给文件系统。