使用多个流写入一个文件
Writing to one file with multiple streams
我打开了两个命令提示符并在其中启动了 python 3.7 解释器。
我可以在两个提示上打开同一个文件,我也可以交替关闭它们,我想每当我使用 write() 写入文件时它实际上写入缓冲区然后当文件关闭时它写入缓冲区中的任何内容该流的数据,覆盖用前一个流写入的数据。我不明白我怎么没有收到任何错误。
有谁知道内部发生了什么?
当您打开每个文件时(在 '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 将缓冲逻辑移交给文件系统,除非您另有说明。
我打开了两个命令提示符并在其中启动了 python 3.7 解释器。 我可以在两个提示上打开同一个文件,我也可以交替关闭它们,我想每当我使用 write() 写入文件时它实际上写入缓冲区然后当文件关闭时它写入缓冲区中的任何内容该流的数据,覆盖用前一个流写入的数据。我不明白我怎么没有收到任何错误。 有谁知道内部发生了什么?
当您打开每个文件时(在 '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 将缓冲逻辑移交给文件系统,除非您另有说明。