如何从作为字符串提供给我的完整路径中删除目录和文件名?
例如,来自:
>>path_string
C:/Data/Python/Project/Test/file.txt
我想得到:
>>dir_and_file_string
Test/file.txt
我假设这是一个字符串操作而不是文件系统操作。
答案 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