Как объединить более одного объекта pathlib? - PullRequest
1 голос
/ 02 августа 2020

У меня есть два объекта Path, использующих библиотеку pathlib Python, pathA = Path('/source/parent') и pathB = Path('/child/grandchild'). Каков самый прямой способ объединить эти два, чтобы получить объект Path('/source/parent/child/grandchild')?

1 Ответ

0 голосов
/ 02 августа 2020

Согласно docs :

Вы можете сделать это легко, pathlib.PurePath(*pathsegments)

"Каждый элемент pathsegments может быть либо строкой, представляющей сегмент пути, объект, реализующий интерфейс os.PathLike, который возвращает строку, или другой объект пути. "

>>> PurePath('foo', 'some/path', 'bar')
PurePosixPath('foo/some/path/bar')
>>> PurePath(Path('foo'), Path('bar'))
PurePosixPath('foo/bar')

Итак, для вас это будет:

pathA = pathlib.Path('source/parent')
pathB = pathlib.Path('child/grandchild')
pathAB = pathlib.PurePath(pathA, pathB)

Output: source/parent/child/grandchild

Примечание

"Когда задано несколько абсолютных путей, последний берется в качестве привязки (имитируя os.path.join () ' s): "

>>> PurePath('/etc', '/usr', 'lib64')
PurePosixPath('/usr/lib64')
>>> PureWindowsPath('c:/Windows', 'd:bar')
PureWindowsPath('d:bar')

Даже если вы сделаете это:

pathA = pathlib.Path('/source/parent')
pathB = pathlib.Path('/child/grandchild')
pathAB = pathlib.PurePath(pathA, pathB)

Pathlib будет обрабатывать pathB как объект пути, представленный строка.

Output: source/child/grandchild
...