под root на *unix системе.
Затем другой юзер, у которого нет прав на эту папку, запускает сл. скрипт
from pathlib import Path
all_txt = list(Path(‘mypath’).glob(‘*.txt’))
assert len(all_txt) > 0, ‘No .txt files here.’
Ошибок не будет, кроме той, что сами ловим в assert
При этом, если этот юзер запустит ls или иную команду к этой папке, то ожидаемо получит PermissionError.
Под рутом этот же скрипт находит файлы и ошибок нет.
Это баг в pathlib или так и надо?
Я это понимаю. Меня интересует другое - почему glob не ругается, что у него нет прав на чтение папки и просто возвращает пустой список? Так и надо или это issue?
В доке не написано ничего про это, у меня ведёт себя так же. Мне кажется, 99% что так должно быть
Судя по тому, что гугл находит, это нормальное поведение. В этом issue вскользь упоминали, мол, хорошо бы флаг какой-нибудь добавить, но в итоге просто добавили обработку PermissionError. https://bugs.python.org/issue24120
я думаю надо опираться на это: https://www.opennet.ru/man.shtml?topic=glob&category=3&russian=5 > The glob() function shall match all accessible pathnames against this pattern
Обсуждают сегодня