У меня есть устаревший код Python, использующий строки для операций с путями, и я перехожу на него с помощью pathlib. Одна из этих строк представляет собой шаблон, используемый для поиска файла определенного типа. Я подумал, что имело бы смысл превратить это в pathlib PurePath, поскольку, хотя на самом деле это не путь, указывающий на что-то в файловой системе, некоторые вычислительные операции полезно выполнять над ним, в частности,expanduser(), поскольку в дополнение к шаблонам звездочек в стиле glob он также может содержать тильды, которые необходимо расширить в фактический домашний каталог пользователя.
Однако glob.glob() аварийно завершает работу, если вы даете ему команду PurePath:
Код: Выделить всё
>>> glob.glob(p)
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python3.12/glob.py", line 28, in glob
return list(iglob(pathname, root_dir=root_dir, dir_fd=dir_fd, recursive=recursive,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/glob.py", line 48, in iglob
root_dir = pathname[:0]
~~~~~~~~^^^^
TypeError: 'PurePosixPath' object is not subscriptable
Это заставляет меня задаться вопросом, имеет ли смысл вообще иметь звездочки в стиле glob в pathlib PurePath? Я пробовал читать документацию по pathlib, но, похоже, там не указано, что должен или не должен содержать PurePath.
Подробнее здесь:
https://stackoverflow.com/questions/798 ... asterisk-p