Ошибка Python Path.rglob при сетевой ошибке при обнаружении папки без разрешения - PullRequest
0 голосов
/ 20 октября 2018

Я новичок в Python и использую этот сайт в качестве ссылки ... спасибо за все, я многому научился.Первый вопрос:

Я выполняю простой рекурсивный поиск файлов с помощью Path.rglob ().Я сталкиваюсь с ошибкой, когда он сталкивается с папкой, к которой у него нет прав доступа.Я использую Python 3.7 в Windows и подключаюсь к общей папке Windows на сетевом диске.

Вот мой код:

scan_folder = pathlib.Path("//192.168.1.242/Media")
nfo_files = list(scan_folder.rglob("*.nfo"))

Он работает идеально, пока не встретится с папкой, которой у меня нетразрешение на доступ, затем он выдает ошибку:

Traceback (most recent call last):
  File "D:/Working/media_tools/media_tools/movies_nfo_cataloger.py", line 337, in <module>
    nfo_files = list(scan_folder.rglob("*.nfo"))
  File "C:\Users\ulrick65\Anaconda3\lib\pathlib.py", line 1094, in rglob
    for p in selector.select_from(self):
  File "C:\Users\ulrick65\Anaconda3\lib\pathlib.py", line 544, in _select_from
    for p in successor_select(starting_point, is_dir, exists, scandir):
  File "C:\Users\ulrick65\Anaconda3\lib\pathlib.py", line 507, in _select_from
    entries = list(scandir(parent_path))
OSError: [WinError 59] An unexpected network error occurred: '\\\\192.168.1.242\\Media\\#recycle'

Process finished with exit code 1

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

https://bugs.python.org/issue24120

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

Я знаю, что могу использовать oswalk, поскольку он игнорирует их ... но я подумал, учитывая исправление ошибки, на которое я ссылался выше,так следует path.glob, однако это не так.Кроме того, использование path.rglob () довольно гладко, одна строка кода и быстро (не то, чтобы oswalk не был бы таким же быстрым).

Любая помощь приветствуется.

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