В python3 при работе с неизвестными (вводимыми пользователем) путями к файлам мне нужно поддерживать символы подстановки, такие как ./r*/*.dat
. План состоял в том, чтобы использовать что-то вроде этого (упрощенно):
paths = []
for test in userinputs:
paths.extend(pathlib.Path().glob(test))
Это прекрасно работает для относительных путей; однако, когда пользователь указывает абсолютный путь (что ему следует разрешить делать), код завершается ошибкой:
NotImplementedError: Non-relative patterns are unsupported
Если это «простой» шар, такой как /usr/bin/*
, я могу сделать что-то вроде:
test = pathlib.Path("/usr/bin/*")
sources.extend(test.parent.glob(test.name))
Однако, как и в первом примере с моим путем, мне нужно учитывать подстановочные знаки в любых частях пути, таких как /usr/b*/*
.
Есть ли элегантное решение для этого? Я чувствую, что упускаю что-то очевидное.