[issue23076] list(pathlib.Path().glob("")) fails with IndexError
liu chang
report at bugs.python.org
Thu Jan 1 19:42:51 CET 2015
liu chang added the comment:
hi pitrou, should we fix it in _make_selector(pattern_parts) function?
origin code as:
def _make_selector(pattern_parts):
pat = pattern_parts[0]
child_parts = pattern_parts[1:]
if pat == '**':
cls = _RecursiveWildcardSelector
elif '**' in pat:
raise ValueError("Invalid pattern: '**' can only be an entire path component")
elif _is_wildcard_pattern(pat):
cls = _WildcardSelector
else:
cls = _PreciseSelector
return cls(pat, child_parts)
Is it a good fix that: check the length of pattern_parts, if its length < 2, we set pat to empty str, set child_parts to a empty list。
A simple code like:
def _make_selector(pattern_parts):
try:
pat = pattern_parts[0]
child_parts = pattern_parts[1:]
except IndexError:
pat = ""
child_parts = []
if pat == '**':
cls = _RecursiveWildcardSelector
elif '**' in pat:
raise ValueError("Invalid pattern: '**' can only be an entire path component")
elif _is_wildcard_pattern(pat):
cls = _WildcardSelector
else:
cls = _PreciseSelector
return cls(pat, child_parts)
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue23076>
_______________________________________
More information about the Python-bugs-list
mailing list