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