Python - 从正在使用Windows编写的文本文件中读取

时间:2015-10-13 09:17:18

标签: python file file-writing

我使用的是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完成之前看到任何更改。

有没有办法解决这个问题?我需要在两个独立的程序中保持阅读和写作。

1 个答案:

答案 0 :(得分:0)

这可能是由程序1中的缓冲引起的。您可以在每次写入后尝试刷新程序1中的输出:

fid.write(str(i) + "\n")
fid.flush()

您可以尝试的另一件事是在程序1的非缓冲模式下运行Python解释器。使用python -u选项。

另外,您是否需要在程序2中打开文件进行更新(模式r+)?如果您只想阅读它,模式r就足够了,或者您可以在调用open()时省略该模式。