gpt4 book ai didi

python - 在文件中连续写入和读取

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:03 25 4
gpt4 key购买 nike

我目前正在尝试找到一种方法,让一个线程在文件中写入日志,另一个线程读取日志并处理它们。我找到了a way (第5部分)连续读取文件中的数据,但我在数据中写入文件时确实遇到问题。

当我尝试在文件中写入内容时,我需要随后将其关闭,否则文件将保持空白。但如果我关闭文件,我就无法再读取它了。所以我的阅读线程如下所示:

def follow(file):
file.seek(0,0)
while True:
line = file.readline()
if not line:
time.sleep(0.1)
continue
yield line

file = open(self.path)
loglines = follow(self.file)
for line in loglines:
print(line)

但是为了写作,我使用了类似的东西:

file = open(self.path, 'w')
file.write(self.generateLog())
file.close()
sleep(self.duration)

但是,一旦调用 file.close(),我在读取部分就会出错:

  line 38, in run
for line in loglines:
line 147, in follow
line = file.readline()
ValueError: I/O operation on closed file.

但是如果我在写入后不关闭文件,它就永远不会更新。(我只是做写入部分以确保读取部分正常工作。理论上,日志文件将由 apache 或其他东西更新)。

编辑:感谢flush(),我不再遇到这个问题了,非常感谢!但写作和阅读似乎很难。如果我打印我写的行和我读的行,我会得到类似的内容:

Writing : 158.228.210.37 [...] "GET /cat/rzkpvwons HTTP/1.0" 505 1119
Reading : 5 1119

所以读取并没有读取整行。知道问题所在吗?

EDIT2:只是将 open(path,'w') 更改为 open(path,'a+') 似乎与刷新结合使用,应该早点考虑到这一点。非常感谢!

非常感谢,贾兹

最佳答案

这个库可以满足您的需要吗? https://github.com/B2W-BIT/and异步输入输出日志库

关于python - 在文件中连续写入和读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52624141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com