[New-bugs-announce] [issue46050] [pathlib] Option so that OSError does not block glob in pathlib library
matt
report at bugs.python.org
Sat Dec 11 11:25:35 EST 2021
New submission from matt <github.gitmatt at xoxy.net>:
Hi there,
ISSUE DESCRIPTION
when I browse starting from the linux root ('/')
path = pathlib.Path('/')
_glob = '**/*'
for p in path.glob(_glob):
The program stops on my machine because of OSError.
File "/usr/lib/python3.8/pathlib.py", line 535, in _select_from
entries = list(scandir_it)
OSError: [Errno 22] Invalid argument: '/proc/5916/task/5916/net'
****************************************
Entering post mortem debugging...
****************************************
> /usr/lib/python3.8/pathlib.py(535)_select_from()
533 try:
534 with scandir(parent_path) as scandir_it:
--> 535 entries = list(scandir_it)
536 for entry in entries:
537 if self.dironly:
I also another case is if a cloud drive is disconnected.
QUICK SOLUTION
I solved both issues for me by adding an adding an except OSError: return at the end of the two function below:
class _WildcardSelector(_Selector):
def _select_from(self, parent_path, is_dir, exists, scandir):
(...)
except OSError:
return
class _RecursiveWildcardSelector(_Selector):
def _iterate_directories(self, parent_path, is_dir, scandir):
(...)
except OSError:
return
FEATURE REQUEST
I don't know the consequences of those 2 modifications so perhaps they could follow an option when calling glob with an optional parameter ignoreOSerror = false by default?!
----------
components: Library (Lib)
messages: 408314
nosy: matt32106
priority: normal
severity: normal
status: open
title: [pathlib] Option so that OSError does not block glob in pathlib library
type: enhancement
versions: Python 3.8
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue46050>
_______________________________________
More information about the New-bugs-announce
mailing list