Я работаю над проектом, который наблюдает за моим рабочим столом с помощью Watchdog и отправляет указанный тип файла внешнему API, который выполняет некоторые jiggery-pokery, а затем возвращает его на мой рабочий стол в созданной папке.
Я использую Python 3.8 и Pathlib expanduser
, а не старый метод os.path.expanduser
, потому что я хочу сделать эту платформенно-зависимую c, а не macOS, только более приятным способом. Вот класс, на котором я сосредотачиваюсь:
class ObserverLoop:
def __init__(self):
self.folder = Path("~/Desktop")
# self.working_path = os.path.abspath(os.path.expanduser("~/" + "/Desktop/"))
self.working_path = self.folder.expanduser()
self.event_handler = MonitorFolderChanges(self.working_path)
def start_loop(self):
tf.key = secrets.api_key
observer = Observer()
observer.schedule(self.event_handler, self.working_path, recursive=False)
observer.start()
try:
while observer.is_alive():
observer.join(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Для справки, вот часть используемого здесь класса MonitorFolderChanges
:
class MonitorFolderChanges(FileSystemEventHandler):
def __init__(self, working_path):
self.path = working_path
def on_modified(self, event):
file_exts = [".jpg", ".jpeg" ".png", ".svg", ".gif"]
images = []
for file in Path(self.path).glob("**/*"):
# for file in os.listdir(self.path):
full_path = PurePath(f"{self.path}/{file}")
if full_path.suffix.lower() in file_exts: <snip>
Однако пока я могу заставить это работать используя os.path
, я получаю недопустимую инструкцию 4 при использовании Pathlib
.
Я сузил это - я думаю - до того места, где создается экземпляр observer
. Мои навыки Python не являются экспертами, но я не думаю, что у меня что-то не так. Это конфликт со Watchdog, который я могу исправить, или есть еще один ответ, который мне здесь не хватает?