从路径中删除目录和文件名作为字符串

时间:2014-10-30 07:07:38

标签: python

如何从作为字符串提供给我的完整路径中删除目录和文件名?

例如,来自:

>>path_string
C:/Data/Python/Project/Test/file.txt

我想得到:

>>dir_and_file_string
Test/file.txt

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

4 个答案:

答案 0 :(得分:1)

不是太优雅,但这里有:

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'

但请务必阅读why use os.path.join over string concatenation。例如,如果路径包含反斜杠(这是Windows上的传统路径分隔符),则会失败。使用os.path.sep代替'/'无法完全解决此问题。

答案 1 :(得分:1)

您应该使用os.path.relpath

import os
full_path = "/full/path/to/file"
base_path = "/full/path"
relative_path = os.path.relpath(full_path, base_path)

答案 2 :(得分:0)

os.path.sep.join(path_string.split(os.path.sep)[-2:])

答案 3 :(得分:0)

关于解决方案的小问题,我猜,但它运作正常。

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