Допустим, у меня есть эта структура каталогов.
├── root1
│ └── root2
│ ├── bar
│ │ └── file1
│ ├── foo
│ │ ├── file2
│ │ └── file3
│ └── zoom
│ └── z1
│ └── file41
Я хочу изолировать компоненты пути относительно root1/root2
, т.е. удалить начальную root
часть, указав относительные каталоги:
bar/file1
foo/file3
zoom/z1/file41
Глубина root быть произвольным, и файлы, являющиеся узлом этого дерева, также могут находиться на разных уровнях.
Этот код делает это, но я ищу способ Pathlib для pythoni c.
from pathlib import Path
import os
#these would come from os.walk or some glob...
file1 = Path("root1/root2/bar/file1")
file2 = Path("root1/root2/foo/file3")
file41 = Path("root1/root2/zoom/z1/file41")
root = Path("root1/root2")
#take out the root prefix by string replacement.
for file_ in [file1, file2, file41]:
#is there a PathLib way to do this??
file_relative = Path(str(file_).replace(str(root),"").lstrip(os.path.sep))
print(" %s" % (file_relative))