[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