python - 如何以 Pythonic 方式向上移动和目录?

标签 python python-3.x operating-system

我正在寻找一种从给定目录向上移动 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])

但是,它的可读性不是很好,并且对于 Windows 机器上的路径失败。从本质上讲,它并不是一个非常 pythonic 的解决方案。

是否有更好、更 pythonic 的解决方案,也许使用 os 模块?

最佳答案

您可以使用 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

关于python - 如何以 Pythonic 方式向上移动和目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55516779/

相关文章:

python - 操作错误(1054, "Unknown column ' 月'在 'field list' 中)

python - 使用 Django EmailMessage 将文本设置为粗体和垂直空间

python - 类中的生成器表达式未产生我期望的输出

python-3.x - Python 多进程调度

python - 如何制作一个连续的字母列表 python(从 a-z 然后从 aa、ab、ac 等)

python - 在 Python 类中使用对象变量作为递归方法参数

python-3.x - 如何从 Python Selenium 中的类中提取所有 href?

c - C语言中如何使用管道连接两个子进程

operating-system - 什么是多任务操作系统?

c - 在 fork() 进程中没有父进程的 Action 会发生什么?