Repository navigation
[pathlib] Option so that OSError does not block glob in pathlib library #90208
Description
Activity
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?!- added3.8 (EOL)end of lifeend of lifestdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-featureA feature request or enhancementA feature request or enhancement
on Dec 11, 2021 IMO it should ignore all
OSErrorexceptions that are generated below the top-level path. PR incoming...- added 5 commits that reference this issue
on May 3, 2023 - added 2 commits that reference this issue
on May 11, 2023
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsDone
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
Linked PRs
pathlib.Path.glob()#104141