我目前正在尝试编写一个监视特定目录中特定文件的代码,然后当文件更新时,我的程序告诉我它已更新,然后从此更新文件中读取并输出个性化响应。
要观看文件,我使用看门狗,它本身就可以正常工作。为了从文件中读取,我编写了一个非常简单的代码来让它读取文本文件中的数字,然后使用if-elif-else语句来获得所需的输出。但是,我很难将两段代码链接在一起,即我希望wathdog脚本能够看到该文件,然后当它更新时会触发代码的下一部分,该代码会读取看门狗正在查看的文件并提供所需的输出。 / p>
我真的卡住了,有人能帮助我吗?
编辑:
import time
from watchdog.observers import Observer
from watchdog.event import FileSystemEventHandler
class Myhandler(FileSystemEventHandler):
def on_modified(self, event):
print("Got it!")
if __name__== "__main__":
event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, path = 'My path here', recursive=False)
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
这是我的监视程序代码,用于监视文件何时更新。
f=open("MyFile.txt", encoding='utf-8-sig')
g=f.read()
print(g)
num=int(g)
if num = 10:
r = open("Response.txt", "w")
r.write("Bla")
r.close()
elif num = 20
r = open("Response.txt", "w")
r.write("Bla")
r.close()
等等所有其他选项。第二部分是根据正在监视的文件上写入的内容写入新文本文件的部分。
我想做的是看门狗(代码的第一部分)观看文件,然后在更新时,触发代码的第二部分从该文件中读取并给出指定的输出(第二部分代码)我只是无法弄清楚如何将两者联系起来!我将代码的第二部分放在' if'第一段代码的一部分,但它没有用。
答案 0 :(得分:0)
你不能这样做吗?
import time
while True:
Text=open('MyFile.txt','r')
fileText=Text.read()
Text.close()
newText=fileText
while fileText==newText:
time.sleep(5)
Text=open('MyFile.txt','r')
newText=Text.read()
Text.close()
f=open("MyFile.txt", encoding='utf-8-sig')
g=f.read()
print(g)
num=int(g)
if num == 10:
r = open("Response.txt", "w")
r.write("Bla")
r.close()
elif num == 20:
r = open("Response.txt", "w")
r.write("Bla")
r.close()