Я новичок в 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 не был бы таким же быстрым).
Любая помощь приветствуется.