获取文件路径的特定部分的最简单方法

时间:2014-04-10 19:27:38

标签: python parsing filepath fileparsing fileparse

我有点难以解决。我需要提取文件路径的特定部分。我已经在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方法来实现这一目标。

3 个答案:

答案 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)

使用os.path.commonprefix

的方法不太完善
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)