对python中的文件操作和多线程不熟悉,所以在这里请教。所以我想做这样的事情:一个写入线程将一些数据写入文件,另一个读取线程从文件顶部读取数据,但如果文件为空,则读取线程只会等到文件有内容。我认为多线程应该很容易,但是尝试了一些方法,没有得到它。如果可以提供一些代码片段,非常感谢。谢谢!
也许你可以尝试WatchDog。
它是一个监控文件系统事件的库,你可以自定义你的事件函数,如
on_created
,on_modified
等
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEvent, FileSystemEventHandler
class CustomHandler(FileSystemEventHandler):
def __init__(self, path) -> None:
super().__init__()
self.path = path
self.record = []
def on_modified(self, event: FileSystemEvent) -> None:
super().on_modified(event)
with open(path, "r") as f:
self.record.append(f.read())
print(self.record)
if __name__ == "__main__":
path = "file_test.txt"
observer = Observer()
observer.schedule(CustomHandler(path), path)
observer.start()
try:
while True:
time.sleep(1)
with open(path, "a") as f:
f.write("Hello, world!\n")
except KeyboardInterrupt:
observer.stop()
observer.join()