Поскольку у меня были проблемы с python2.5, я попробовал также python 2.7 и теперь получаю другую ошибку:
(Я предполагаю, что что-то не так с ctypes и dll Windows, но я не могу сказать больше, чем это ...)
Cc C-cException в потоке Thread-2:
Отслеживание (последний вызов последний):
Файл "c: Python27libthreading.py", строка 552, в __bootstrap_inner
self.run ()
Файл "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserversapi.py", строка 192, выполняется
self.queue_events (self.timeout)
Файл "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserversread_directory_changes.py", строка 80, в queue_events
self.watch.is_recursive)
Файл "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserverswinapi_common.py", строка 130, в read_directory_changes
Никто)
Файл "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserverswinapi.py", строка 103, в _errcheck_bool
поднять ctypes.WinError ()
WindowsError: [Ошибка 1] Некорректная функция.
Привет,
Мне очень жаль, что я столкнулся с этой проблемой двухлетней давности, но я столкнулся с той же проблемой с Windows 10, python2.7 и сторожевым псом 0.8.3.
Его можно воспроизвести с помощью следующего фрагмента кода:
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class Handler(FileSystemEventHandler):
def on_any_event(self, event):
print "File changed: %s" % event.src_path
if __name__ == '__main__':
event_handler = Handler()
observer = Observer()
observer.schedule(event_handler, '.', recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Результирующее исключение выглядит так:
Exception in thread Thread-2:
Traceback (most recent call last):
File "c:\python27\Lib\threading.py", line 801, in __bootstrap_inner
self.run()
File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\api.py", line 146, in run
self.queue_events(self.timeout)
File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\read_directory_changes.py", line 77, in queue_events
winapi_events = read_events(self._handle, self.watch.is_recursive)
File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\winapi.py", line 347, in read_events
buf, nbytes = read_directory_changes(handle, recursive)
File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\winapi.py", line 307, in read_directory_changes
raise e
WindowsError: [Error 1] Incorrect function.
Скажите, пожалуйста, если вам нужна дополнительная информация.
Я сам немного покопался в api Windows, и, конечно же, я смог определить проблему.
Просматривая возвращаемые значения ReadDirectoryChangesW, я обнаружил следующее:
Если сетевой перенаправитель или целевая файловая система не поддерживает эту операцию, функция завершается ошибкой с ERROR_INVALID_FUNCTION.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465 (v = vs.85) .aspx
Я работал над сетевым ресурсом.
Копирование файлов, которые мне нужно посмотреть, в локальную файловую систему исправило это за меня.
Я оставлю это здесь на тот случай, если кто-то еще обнаружит эту проблему при поиске сообщения об ошибке в Google.
Это помогло мне только сегодня. Может быть, нам следует создать специальную ошибку с более подробным сообщением о том, почему это произошло (или, может быть, просто ссылку на эту проблему)
Самый полезный комментарий
Я сам немного покопался в api Windows, и, конечно же, я смог определить проблему.
Просматривая возвращаемые значения ReadDirectoryChangesW, я обнаружил следующее:
Я работал над сетевым ресурсом.
Копирование файлов, которые мне нужно посмотреть, в локальную файловую систему исправило это за меня.
Я оставлю это здесь на тот случай, если кто-то еще обнаружит эту проблему при поиске сообщения об ошибке в Google.