在Python中写入文件时从文件读取?

6yoyoihd  于 2023-11-20  发布在  Python
关注(0)|答案(2)|浏览(138)

我按照提出的解决方案here
为了测试它,我分别使用了两个程序writer.pyreader.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应用程序,我无法访问源代码。

k4ymrczo

k4ymrczo1#

您需要flush您的写入/打印到文件,否则它们将默认为块缓冲(因此您必须在用户模式缓冲区实际发送到操作系统进行写入之前写入几个字节)。
最简单的解决方案是在write调用之后调用.flush

f.write('{}'.format(i))
    f.flush()

字符串

wdebmtf2

wdebmtf22#

这里有两个不同的问题:
1.操作系统和文件系统必须允许对文件的并发访问。如果你没有得到任何错误,这是事实,但在某些系统上,它可能是不允许的。
1.写入器必须flush它的输出才能到达磁盘,这样读取器才能找到它。如果不这样做,输出将留在内存缓冲区中,直到这些缓冲区充满为止,这可能需要几个KB
作者应该成为:

# writer.py
import time

with open('pipe.txt', 'w', encoding = 'utf-8') as f:
    i = 0
    while True:
        f.write('{}'.format(i))
        f.flush()
        print('I wrote {}'.format(i))
        time.sleep(3)
        i += 1

字符串

相关问题