Python中有没有一种简单的方法可以从两个单独的线程读取和写入文件?

问题描述 投票:0回答:1

对python中的文件操作和多线程不熟悉,所以在这里请教。所以我想做这样的事情:一个写入线程将一些数据写入文件,另一个读取线程从文件顶部读取数据,但如果文件为空,则读取线程只会等到文件有内容。我认为多线程应该很容易,但是尝试了一些方法,没有得到它。如果可以提供一些代码片段,非常感谢。谢谢!

python python-3.x multithreading file
1个回答
0
投票

也许你可以尝试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()
© www.soinside.com 2019 - 2024. All rights reserved.