Pathlib Python получить относительный путь родителя - PullRequest
0 голосов
/ 28 января 2019

Рассмотрим следующее Path:

import pathlib
path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')

Как мне извлечь из этой строки точную строку 'documents \ Importantdocuments' Path?

Я знаю, этот пример выглядит глупо,реальный контекст здесь - перевод локального файла в удаленную ссылку для скачивания.

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Вы можете использовать .parts :

import pathlib
path = pathlib.PureWindowsPath(r'C:\users\user1\documents\importantdocuments')
print ('/'.join(path.parts[-2:]))

Отпечатки:

'documents/importantdocuments'
0 голосов
/ 28 января 2019

Это работает на любой ОС и каждой версии Python:

import os
os.path.join(os.path.basename(os.path.dirname(p)),os.path.basename(p))

Это работает на Python 3:

str(p.relative_to(p.parent.parent))
0 голосов
/ 28 января 2019

Используйте PurePath.relative_to() метод для создания относительного пути.

Вы не очень понимали, как определяется базовый путь;Вот два варианта:

secondparent = path.parent.parent
homedir = pathlib.Path(r'C:\users\user1')

, затем просто используйте str() для результата path.relative_to(secondparent) или path.relative_to(homedir).

Демо:

>>> import pathlib
>>> path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')
>>> secondparent = path.parent.parent
>>> homedir = pathlib.Path(r'C:\users\user1')
>>> str(path.relative_to(secondparent))
'documents\\importantdocuments'
>>> str(path.relative_to(homedir))
'documents\\importantdocuments'
...