我按照提出的解决方案here
为了测试它,我分别使用了两个程序writer.py
和reader.py
。
# writer.py
import time
with open('pipe.txt', 'w', encoding = 'utf-8') as f:
i = 0
while True:
f.write('{}'.format(i))
print('I wrote {}'.format(i))
time.sleep(3)
i += 1
个字符
当我跑步时:
> python writer.py
> python reader.py
的字符串
reader将在writer退出后打印这些行(当我终止进程时)
有没有其他方法可以在写内容的时候读取内容?
[编辑]**
实际写入文件的程序是一个.exe
应用程序,我无法访问源代码。
2条答案
按热度按时间k4ymrczo1#
您需要
flush
您的写入/打印到文件,否则它们将默认为块缓冲(因此您必须在用户模式缓冲区实际发送到操作系统进行写入之前写入几个字节)。最简单的解决方案是在
write
调用之后调用.flush
:字符串
wdebmtf22#
这里有两个不同的问题:
1.操作系统和文件系统必须允许对文件的并发访问。如果你没有得到任何错误,这是事实,但在某些系统上,它可能是不允许的。
1.写入器必须
flush
它的输出才能到达磁盘,这样读取器才能找到它。如果不这样做,输出将留在内存缓冲区中,直到这些缓冲区充满为止,这可能需要几个KB作者应该成为:
字符串