Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分离basename和目录路径的Pythonic方法_Python - Fatal编程技术网

分离basename和目录路径的Pythonic方法

分离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] 更好的解决办法是:

我正在寻找一种简单的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 = "/".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。此外,如果您解释了如何编写代码来回答问题,这将是一个更好的答案。