分离basename和目录路径的Pythonic方法
我正在寻找一种简单的Pythonic方法来解析Linux风格的路径,同时将basename和目录路径保留在各自的变量中 此解决方案的一个问题是,它假定在完整路径中没有重复的basename。现在,通常情况下这是正确的,这个解决方案在技术上是不正确的分离basename和目录路径的Pythonic方法,python,Python,我正在寻找一种简单的Pythonic方法来解析Linux风格的路径,同时将basename和目录路径保留在各自的变量中 此解决方案的一个问题是,它假定在完整路径中没有重复的basename。现在,通常情况下这是正确的,这个解决方案在技术上是不正确的 import os x = "/home/first/second/third/main.cpp" basename = os.path.basename(x) dir_path = x.split(basename)[0] 更好的解决办法是:
import os
x = "/home/first/second/third/main.cpp"
basename = os.path.basename(x)
dir_path = x.split(basename)[0]
更好的解决办法是:
import os
x = "/home/first/second/third/main.cpp"
basename = os.path.basename(x)
dir_path = "/".join(x.split("/")[:-1])
现代python方法是使用,它为路径操作提供了面向对象的接口:
from pathlib import Path
thing = Path('my/path').name
使用os.path
,这是一种老派的方法(仍然很好)
import os.path
thing = os.path.basename('my/path')
我更新了这个问题。我想说明的是,我正在寻找一种方法,在不影响输入字符串或事先知道basename的情况下,将dir路径从basename分离为两个单独的变量。此解决方案似乎违反了上的PEP8部分。我假设任何Pythonic解决方案都符合PEP8。此外,如果您解释了如何编写代码来回答问题,这将是一个更好的答案。