如何以Python方式上移n个目录?

Ral*_*lph 4 python operating-system python-3.x

我正在寻找n从给定目录上移目录的pythonic方法。

假设我们有示例路径/data/python_env/lib/python3.6/site-packages/matplotlib/mpl-data。如果要上移n=2目录,我们应该以结尾/data/python_env/lib/python3.6/site-packages

以下是向上移动n目录的工作:

up_n = lambda path, n: '/'.join(path.split('/')[:-n])
Run Code Online (Sandbox Code Playgroud)

但是,它不是很可读,并且在Windows计算机上的路径失败。从本质上讲,它并不是一个非常Python的解决方案。

是否有更好,更Python化的解决方案,也许使用该os模块?

Thi*_*lle 8

您可以使用标准库的pathlib模块:

from pathlib import Path

path = Path('/data/python_env/lib/python3.6/site-packages/matplotlib/mpl-data')

levels_up = 2
print(path.parents[levels_up-1])
# /data/python_env/lib/python3.6/site-packages
Run Code Online (Sandbox Code Playgroud)


Jea*_*bre 7

如何迭代os.path.dirname

import os

s = "/data/python_env/lib/python3.6/site-packages/matplotlib/mpl-data"
for _ in range(2):
    s = os.path.dirname(s)

print(s)
Run Code Online (Sandbox Code Playgroud)

印刷品:

/data/python_env/lib/python3.6/site-packages
Run Code Online (Sandbox Code Playgroud)