Python 将目录和文件名作为字符串从路径中剥离

Python 将目录和文件名作为字符串从路径中剥离,python,Python,如何将目录和文件名从作为字符串提供给我的完整路径中剥离出来 例如,来自: >>path_string C:/Data/Python/Project/Test/file.txt 我想得到: >>dir_and_file_string Test/file.txt 我假设这是一个字符串操作,而不是文件系统操作。不太优雅,但下面是: In [7]: path = "C:/Data/Python/Project/Test/file.txt" In [8]: dir, file

如何将目录和文件名从作为字符串提供给我的完整路径中剥离出来

例如,来自:

>>path_string
C:/Data/Python/Project/Test/file.txt
我想得到:

>>dir_and_file_string
Test/file.txt

我假设这是一个字符串操作,而不是文件系统操作。

不太优雅,但下面是:

In [7]: path = "C:/Data/Python/Project/Test/file.txt"

In [8]: dir, filename = os.path.split(path)

In [9]: dir_and_file_string = os.path.join(os.path.split(dir)[1], filename)

In [10]: dir_and_file_string
Out[10]: 'Test/file.txt'
这是冗长的,但具有可移植性和健壮性

或者,您可以将其视为字符串操作:

In [16]: '/'.join(path.split('/')[-2:])
Out[16]: 'Test/file.txt'
但一定要阅读。例如,如果路径包含反斜杠(这是Windows上的传统路径分隔符),则此操作将失败。使用
os.path.sep
而不是
'/'
不会完全解决此问题。

您应该使用


我想这是一个简单的解决方案,但效果很好

path_string = "C:/Data/Python/Project/Test/file.txt"
_,_,_,_,dir_,file1, = path_string.split("/")
dir_and_file_string = dir_+"/"+file1
print dir_and_file_string

如果只是字符串操作,只需在“/”上拆分,则获取最后2个元素并再次使用“/”将它们连接起来。或者您可以使用
os.path.sep
作为路径分隔符。您应该提供一些关于基本路径的起源、您与平台的独立性等的详细信息。可以通过正则表达式或更了解操作系统的内容来实现(例如,它在
C:/path/To/./squarly/./Folder
?)这样的字符串上应该如何运行我认为这是一个完整的解决方案,您需要通过编程从
full\u path
派生
base\u path
,而不是硬编码。如果您通过编程从
full\u path
派生
base\u path
或反之亦然,那么您不需要获得相对路径,因为您在编程上知道它。我认为这是一个很好的例证。问题缺少一些细节。仅供参考:在低质量队列中找到。这是一个答案,但是考虑解释一个.LoL,我的答案不像ReX那样难以阅读:)惊讶的是没有人张贴左手边,即<代码>(DrimeNo.FNEXT)=< /COD> >哦,就在这里。d编码器有一个。不太好看。@ghostdog74是的,正则表达式在这里有点过分了。
os.path.sep.join(path_string.split(os.path.sep)[-2:])
path_string = "C:/Data/Python/Project/Test/file.txt"
_,_,_,_,dir_,file1, = path_string.split("/")
dir_and_file_string = dir_+"/"+file1
print dir_and_file_string