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
模块?
您可以使用标准库的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)
如何迭代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)
归档时间: |
|
查看次数: |
414 次 |
最近记录: |