Watchdog: Anjing penjaga dengan pygame

Dibuat pada 23 Nov 2018  ·  5Komentar  ·  Sumber: gorakhargosh/watchdog

Saya ingin menggunakan pengawas dengan pygame, apakah ini mungkin? Tujuan dari skrip saya adalah ketika sesuatu terjadi di folder, sebuah video akan ditampilkan. Masalahnya adalah ketika saya menjalankan skrip itu tidak mengembalikan kesalahan apa pun.

Berikut kode yang saya gunakan.

#!/usr/bin/python
import time
import os
import pygame
from moviepy.editor import *
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

link = 'abs\\'

def detectFile():    
    pygame.display.set_caption('Hello World!')
    clip = VideoFileClip('01.mp4')
    clip.preview(fps=30,fullscreen=True)
    pygame.quit()


class MyHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print 'test'
        detectFile()        

if __name__ == "__main__":
    event_handler = MyHandler()
    observer = Observer()
    observer.schedule(event_handler, path=link, recursive=False)
    observer.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()
not a bug

Komentar yang paling membantu

@alciomarhollanda ini bukan masalah pengawas. dan Anda dapat menutup masalah ini. Saya telah menguji kode Anda dan memverifikasi bahwa pengawas mendeteksi pembuatan file baru di direktori abs\ dan mencetak 'test'. Tapi masalah di mana Anda bekerja dengan pygame. Anda membuat handler dan meneruskan ini ke instance Observer. Sebenarnya instance Pengamat berfungsi sebagai utas terpisah. Dan bagaimana saya tahu, pygame hanya berfungsi di utas utama. Jadi ketika instance Observer memanggil handler (dan fungsi detectFile) pygame tidak berfungsi, karena ini dilakukan bukan di utas utama. Di sini contoh kerja:

#!/usr/bin/python                                               
import time                                                     
import os                                                       
import pygame                                                   
from moviepy.editor import *                                    
from watchdog.observers import Observer                         
from watchdog.events import FileSystemEventHandler              
from threading import Event                                     

modified = Event()                                              
link = 'abs\\'                                                  


def detectFile():                                               
    while True:                                                 
       modified.wait()                                          
       pygame.display.set_caption('Hello World!')               
       clip = VideoFileClip('01.mp4')                           
       clip.preview(fps=30,fullscreen=True)                     
       pygame.quit()                                            
       break                                                    


class MyHandler(FileSystemEventHandler):                        
    def on_modified(self, event):                               
        print 'test'                                            

if __name__ == "__main__":                                      
    event_handler = MyHandler()                                 
    observer = Observer()                                       
    observer.schedule(event_handler, path=link, recursive=False)
    observer.start()                                            
    detectFile()                                                
    observer.stop()                                             
    observer.join()

Semua 5 komentar

@alciomarhollanda tolong, bisakah Anda memberikan OS apa yang Anda gunakan? Skrip Anda dan 'abs\' terletak di direktori yang sama?

Halo @rrzaripov , saya menggunakan windows 10. Folder abs\ berada di direktori yang sama.

Terima kasih

@alciomarhollanda ini bukan masalah pengawas. dan Anda dapat menutup masalah ini. Saya telah menguji kode Anda dan memverifikasi bahwa pengawas mendeteksi pembuatan file baru di direktori abs\ dan mencetak 'test'. Tapi masalah di mana Anda bekerja dengan pygame. Anda membuat handler dan meneruskan ini ke instance Observer. Sebenarnya instance Pengamat berfungsi sebagai utas terpisah. Dan bagaimana saya tahu, pygame hanya berfungsi di utas utama. Jadi ketika instance Observer memanggil handler (dan fungsi detectFile) pygame tidak berfungsi, karena ini dilakukan bukan di utas utama. Di sini contoh kerja:

#!/usr/bin/python                                               
import time                                                     
import os                                                       
import pygame                                                   
from moviepy.editor import *                                    
from watchdog.observers import Observer                         
from watchdog.events import FileSystemEventHandler              
from threading import Event                                     

modified = Event()                                              
link = 'abs\\'                                                  


def detectFile():                                               
    while True:                                                 
       modified.wait()                                          
       pygame.display.set_caption('Hello World!')               
       clip = VideoFileClip('01.mp4')                           
       clip.preview(fps=30,fullscreen=True)                     
       pygame.quit()                                            
       break                                                    


class MyHandler(FileSystemEventHandler):                        
    def on_modified(self, event):                               
        print 'test'                                            

if __name__ == "__main__":                                      
    event_handler = MyHandler()                                 
    observer = Observer()                                       
    observer.schedule(event_handler, path=link, recursive=False)
    observer.start()                                            
    detectFile()                                                
    observer.stop()                                             
    observer.join()

@BoboTiG masalah ini dapat ditutup.

@BoboTiG masalah ini dapat ditutup.

terima kasih @BoboTiG

Apakah halaman ini membantu?
0 / 5 - 0 peringkat