web-dev-qa-db-ja.com

Python pathlibは親の相対パスを取得します

次のPathを検討してください。

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

そのPathから正確な文字列「documents\importantdocuments」を抽出するにはどうすればよいですか?

この例はばかげているように見えますが、実際のコンテキストはローカルファイルをリモートダウンロードリンクに変換することです。

4
Mojimi

PurePath.relative_to() method を使用して相対パスを生成します。

基本パスがどのように決定されるかについては、あまり明確ではありませんでした。 2つのオプションがあります。

_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'
_
6
Martijn Pieters

これは、すべてのOSとすべてのバージョンの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
Benoît Pilatte

。parts を使用できます。

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

プリント:

'documents/importantdocuments'
0
Maurice Meyer