Как правильно определить класс в Python? - PullRequest
0 голосов
/ 06 апреля 2020

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

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

folder_to_track = 'C:\\Users\\****\\OneDrive\\****\\Python_Projects\\Python_Scripts'
folder_destination = 'C:\\Users\\****\\OneDrive\\****\\prueba'

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

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

Ошибка:

Traceback (most recent call last):
File "C:\Users\****\OneDrive\****\Python_Projects\Python_Scripts\miraperros.py", line 11, in 
<module>
class MyHandler(FileSystemEventHandler):
File "C:\Users\****\OneDrive\****\Python_Projects\Python_Scripts\miraperros.py", line 19, in 
MyHandler
event_handler = MyHandler()
NameError: name 'MyHandler' is not defined
[Finished in 0.1s with exit code 1]

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

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Вы уверены, что у вас нет проблем с форматированием файлов? Потому что выглядит все отлично.

Попробуйте мой отформатированный код:

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

folder_to_track = '<path>'
folder_destination = '<path>'


class MyHandler(FileSystemEventHandler):
    i = 1

    def on_modified(self, event):
        for filename in os.listdir(folder_to_track):
            src = os.path.join(folder_to_track, filename)
            new_destination = os.path.join(folder_destination, filename)
            os.rename(src, new_destination)


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()
0 голосов
/ 06 апреля 2020

Проблема была в отступе.

...