2017-02-19 2 views
0

В настоящее время я пытаюсь написать код, который следит за конкретным файлом в определенном каталоге, а затем, когда файл обновляется, моя программа сообщает мне, что он обновился, а затем читает из этого обновленного файла и выводит персонализированный ответ.Ссылка на два фрагмента кода в Python

Чтобы посмотреть файл, я использую сторожевой таймер, и он отлично работает сам по себе. Чтобы прочитать из файла, я написал очень простой код, чтобы прочитать его в текстовом файле, а затем использовать инструкции if-elif-else для получения желаемого результата. Тем не менее, я изо всех сил пытаюсь связать 2 части кода, т. Е. Я хотел бы, чтобы скрипт wathdog просматривал файл, а затем, когда он обновляет триггер, просматривается следующая часть кода, который читает сторожевой файл, и дает желаемый результат.

Я действительно застрял, сможет ли кто-нибудь помочь мне?

EDIT:

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() 

И так далее со всеми другими вариантами. Эта вторая часть - это часть, которая записывает новый текстовый файл на основе того, что написано в файле, который просматривается.

Что бы я хотел сделать, это иметь сторожевой таймер (первая часть кода) смотреть файл, затем, когда он обновляется, вызвать вторую часть кода для чтения из этого файла и дать назначенный вывод (вторая часть кода) Я просто не могу понять, как связать два! Я, хотя и ставил вторую часть кода в разделе «если» первого кода, но он не работал.

+1

Просьба представить минимально допустимый примерный код того, что вы пытаетесь собрать вместе. – Brian

+0

Почему бы вам просто не ввести код в 'on_modified'? –

+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() 
+0

Может быть ... Что бы я вложил вместо оригинального текста? Я получаю сообщение об ошибке, когда запускаю его с помощью originalText, а также когда я помещаю имя файла txt, которое я читаю из –

+0

Извините, это ошибка. Я отредактирую это. – Phonzi

+0

Хммм, похоже, все еще не работает. Я напишу в файл и обновил его, но потом он не перейдет к следующей части. –