我有点难以解决。我需要提取文件路径的特定部分。我已经在temp目录下提取了一个zip文件,它拥有该文件的完整路径。基本上我想要的是获得完整文件路径和临时路径之间的区别。我举一个例子如下:
Fullpath = c:\\users\\test\\appdata\\local\\temp\\tempDir\\common\\test.txt
TempPath = c:\\users\\test\\appdata\\local\\temp\\tempDir\\
所以我的预期结果是:
results = \\common\\test.txt
只是寻找一种简单的Pythonic方法来实现这一目标。
答案 0 :(得分:3)
您可以使用os.path.relpath:
os.path.relpath(Fullpath, TempPath)
或者你可以使用split:
Fullpath.split(TempPath)[1]
或者您可以将commonprefix与replace替换为:
Fullpath.replace(os.path.commonprefix([Fullpath, TempPath]),'')
输出:
common\test.txt
答案 1 :(得分:0)
import os
Fullpath = 'c:\\users\\test\\appdata\\local\\temp\\tempDir\\common\\test.txt'
TempPath = 'c:\\users\\test\\appdata\\local\\temp\\tempDir\\'
print os.path.commonprefix([Fullpath, TempPath])
# c:\users\test\appdata\local\temp\tempDir\
请注意,该功能对路径一无所知;它是just a character by character deal。
然后使用str.partition获取您感兴趣的部分:
>>> print Fullpath.partition(os.path.commonprefix([Fullpath, TempPath]))
('', 'c:\\users\\test\\appdata\\local\\temp\\tempDir\\', 'common\\test.txt')
如果您遇到这样的情况:
Fullpath = 'c:\\users\\test\\appdata\\local\\temp\\tempDir\\common\\test.txt'
TempPath = 'c:\\users\\test\\appdata\\local\\temp\\tempDir\\co'
最好用os.path.dirname
包装公共前缀>>> os.path.dirname(os.path.commonprefix([Fullpath, TempPath]))
c:\users\test\appdata\local\temp\tempDir\
但这仍然无法解决这样的情况:
Fullpath = 'c:\\users\\test\\..\\test\\appdata\\local\\temp\\tempDir\\common\\test.txt'
解析前需要解析完整绝对路径名的位置。
答案 2 :(得分:0)
results = '\\' + Fullpath.replace(TempPath, '')
或者如果你想确保删除字符串的开头:
import re
results = '\\' + re.sub('^%s' % TempPath, '', Fullpath)