次のPath
を検討してください。
import pathlib
path = pathlib.Path(r'C:\users\user1\documents\importantdocuments')
そのPath
から正確な文字列「documents\importantdocuments」を抽出するにはどうすればよいですか?
この例はばかげているように見えますが、実際のコンテキストはローカルファイルをリモートダウンロードリンクに変換することです。
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'
_
これは、すべての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))
。parts を使用できます。
import pathlib
path = pathlib.PureWindowsPath(r'C:\users\user1\documents\importantdocuments')
print ('/'.join(path.parts[-2:]))
プリント:
'documents/importantdocuments'