Как исправить ошибку TypeError: dispatch (), в которой отсутствует 1 обязательный позиционный аргумент: 'событие' - PullRequest
0 голосов
/ 13 октября 2019

Я пытался создать скрипт, который автоматически сортирует файлы. Конечно, мне нужно иметь возможность перемещать файлы, чтобы все это работало, но я даже не могу этого сделать.

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

Это мой код:

import os
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import time
import json

event = None

class MyHandler(FileSystemEventHandler):
    i = 1
    def on_modified(self, event):
        for filename in os.listdir(folder_to_track):
            src = folder_to_track + "/" + filename
            new_destination = folder_destination + "/" + filename
            os.rename(src, new_destination)

folder_to_track = '/Users/Balduin/Pictures/Florens1019'
folder_destination = '/Users/Balduin/Pictures/Florens1019/raw-jpeg'
event_handler = MyHandler
observer = Observer()
observer.schedule(event_handler, folder_to_track, recursive=True)
observer.start()

try:
    while True:
        time.sleep(10)
except KeyboardInterrupt:
    observer.stop()
observer.join

Это ошибка, которую я получаю:

Exception in thread Thread-6:
Traceback (most recent call last):
  File "C:\Users\Balduin\Anaconda3\lib\threading.py", line 917, in 
_bootstrap_inner
    self.run()
  File "C:\Users\Balduin\Anaconda3\lib\site- 
packages\watchdog\observers\api.py", line 199, in run
    self.dispatch_events(self.event_queue, self.timeout)
  File "C:\Users\Balduin\Anaconda3\lib\site- 
packages\watchdog\observers\api.py", line 368, in dispatch_events
    handler.dispatch(event)
TypeError: dispatch() missing 1 required positional argument: 'event'

1 Ответ

0 голосов
/ 13 октября 2019

Попробуйте

event_handler = MyHandler()

вместо

event_handler = MyHandler

dispatch() Функция, которая определена в watchdog api.py файле (\Anaconda3\lib\site-packages\watchdog\observers\api.py), ожидаетаргумент (event):

handler.dispatch(event)

однако вы не создали экземпляр своего event_handler, и поэтому при вызове handler.dispath().

аргумент не передается.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...