我使用的是Windows 7,Python 2.7。我试图在一个程序中写入一个文件ID的文本文件,继续写几分钟的新数据/数字。
在一个单独的程序中,在写入开始之后,我试图从正在写入的文件中读取,以便更新并绘制文件中的数据。
当第一个程序正在写入数据时,我无法在数据完成之前读取数据。下面是一些示例代码来说明我的观点:
计划1:
import time
fid = open("test1.txt", "w+")
for i in range(0, 5):
fid.write(str(i) + "\n")
print(i)
time.sleep(5)
fid.close()
计划2:
fid = open("test1.txt", "r+")
dataList = fid.read().splitlines()
print(dataList)
fid.close()
在程序1运行时执行程序2不允许我在程序1完成之前看到任何更改。
有没有办法解决这个问题?我需要在两个独立的程序中保持阅读和写作。
答案 0 :(得分:0)
这可能是由程序1中的缓冲引起的。您可以在每次写入后尝试刷新程序1中的输出:
fid.write(str(i) + "\n")
fid.flush()
您可以尝试的另一件事是在程序1的非缓冲模式下运行Python解释器。使用python -u
选项。
另外,您是否需要在程序2中打开文件进行更新(模式r+
)?如果您只想阅读它,模式r
就足够了,或者您可以在调用open()
时省略该模式。