Python - 从正在写入的文本文件中读取 Windows
Python - Reading from a text file that is being written in Windows
我正在使用 Windows 7,Python 2.7。我正在尝试在一个程序中写入一个具有一个文件 ID 的文本文件,该程序继续写入新 data/numbers 几分钟。
在一个单独的程序中,写入开始后,我试图从正在写入的文件中读取数据,以便更新和绘制文件中的数据。
当第一个程序正在写入数据时,我无法在它完成之前读取数据。下面是一些示例代码来说明我的观点:
程序 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 中的缓冲引起的。您可以尝试在每次写入后刷新程序 1 中的输出:
fid.write(str(i) + "\n")
fid.flush()
您可以尝试的另一件事是 运行 程序 1 的 Python 解释器处于非缓冲模式。使用 python -u
选项。
另外,程序2中是否需要打开文件进行更新(模式r+
)?如果只是想看,模式r
就够了,或者调用open()
.
的时候可以省略模式
我正在使用 Windows 7,Python 2.7。我正在尝试在一个程序中写入一个具有一个文件 ID 的文本文件,该程序继续写入新 data/numbers 几分钟。
在一个单独的程序中,写入开始后,我试图从正在写入的文件中读取数据,以便更新和绘制文件中的数据。
当第一个程序正在写入数据时,我无法在它完成之前读取数据。下面是一些示例代码来说明我的观点:
程序 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 中的缓冲引起的。您可以尝试在每次写入后刷新程序 1 中的输出:
fid.write(str(i) + "\n")
fid.flush()
您可以尝试的另一件事是 运行 程序 1 的 Python 解释器处于非缓冲模式。使用 python -u
选项。
另外,程序2中是否需要打开文件进行更新(模式r+
)?如果只是想看,模式r
就够了,或者调用open()
.