一、背景
有时候我们需要返回一个目录的上好几级目录,比如【D:\BaiduNetdiskDownload\test1\test2\test3\test4】,我们想要把这个path参数转化为【D:\BaiduNetdiskDownload\test1】,退了好几级,该怎么搞呢?
二、具体处理方法
2.1 多层嵌套os.path.dirname()
#既然是向上退三个级别,就嵌套三层dirname即可
print(os.path.dirname(os.path.dirname(os.path.dirname(r'D:\BaiduNetdiskDownload\test1\test2\test3\test4'))))
# D:\BaiduNetdiskDownload\test1
2.2 多层叠加【..\..】
print(os.path.abspath('123'))
# D:\BaiduNetdiskDownload\test1\test2\test3\123
# 说明abspath输出的结果就是把输入的字符串当做相对目录连接在当前路径后边
print(os.path.abspath('..'))
print(os.path.abspath(r'D:\BaiduNetdiskDownload\test1\test2\test3\test4\..'))
print(os.path.abspath(os.path.join(r"D:\BaiduNetdiskDownload\test1\test2\test3\test4", "..")))
# 上面这三行代码实质性相同,都是输出D:\BaiduNetdiskDownload\test1\test2\test3
# 如果想要向上返回多级,就多加几个【..\..】
print(os.path.abspath(r'..\..\..'))
print(os.path.abspath(r'D:\BaiduNetdiskDownload\test1\test2\test3\test4\..\..\..'))
# 以上两行输出结果都为D:\BaiduNetdiskDownload\test1
# 上面的所有abspath改成realpath,最终效果一样。