2024-04-26 14:10:54 发布
网友
有人能告诉我如何以跨平台的方式用Python获取路径的父目录吗。E、 g
C:\Program Files ---> C:\
以及
C:\ ---> C:\
如果目录没有父目录,则返回目录本身。这个问题可能看起来很简单,但我无法通过谷歌找到答案。
使用pathlib模块。
pathlib
from pathlib import Path path = Path("/here/your/path/file.txt") print(path.parent)
试试这个:
import os.path print os.path.abspath(os.path.join(yourpath, os.pardir))
其中yourpath是要父级的路径。
yourpath
使用os.path.dirname:
os.path.dirname
>>> os.path.dirname(r'C:\Program Files') 'C:\\' >>> os.path.dirname('C:\\') 'C:\\' >>>
注意:os.path.dirname()根据路径中是否包含尾随斜杠,给出不同的结果。这可能是您想要的语义,也可能不是。Cf.@kender的答案使用os.path.join(yourpath, os.pardir)。
os.path.dirname()
os.path.join(yourpath, os.pardir)
在Python3.4+中
from pathlib import Path Path('C:\Program Files').parent
pathlib documentation
附加信息
新的pathlib库集合并简化了路径和公共文件操作的使用。 下面是一些来自文档的示例。
在目录树中导航:
>>> >>> p = Path('/etc') >>> q = p / 'init.d' / 'reboot' >>> q PosixPath('/etc/init.d/reboot') >>> q.resolve() PosixPath('/etc/rc.d/init.d/halt')
查询路径属性:
>>> >>> q.exists() True >>> q.is_dir() False
从Python 3.4更新
使用
pathlib
模块。旧答案
试试这个:
其中
yourpath
是要父级的路径。使用
os.path.dirname
:注意:
os.path.dirname()
根据路径中是否包含尾随斜杠,给出不同的结果。这可能是您想要的语义,也可能不是。Cf.@kender的答案使用os.path.join(yourpath, os.pardir)
。在Python3.4+中
pathlib documentation
附加信息
新的pathlib库集合并简化了路径和公共文件操作的使用。 下面是一些来自文档的示例。
在目录树中导航:
查询路径属性:
相关问题 更多 >
编程相关推荐