在Python中获取文件路径的特定部分

时间:2014-11-12 01:11:52

标签: python string python-2.7 path

我有一个像

这样的路径字符串
'/path/eds/vs/accescontrol.dat/d=12520/file1.dat'

Q1:如何从路径中仅获取accescontrol.dat

Q2:如何从路径中仅获取/path/eds/vs/accescontrol.dat

5 个答案:

答案 0 :(得分:2)

您可以使用正则表达式

import re
ma = re.search('/([^/]+\.dat)/d=', path)
print ma.group(1)

答案 1 :(得分:2)

import re

url = '/path/eds/vs/accescontrol.dat/d=12520/file1.dat'
match = re.search('^(.+/([^/]+\.dat))[^$]', url)

print match.group(1)
# Outputs /path/eds/vs/accescontrol.dat
print match.group(2)
# Outputs accescontrol.dat

我编辑了这个在python2中工作并回答了这两个问题(上面的早期正则表达式答案只回答了两个中的第一个)

答案 2 :(得分:1)

一个简单的解决方案是使用.split()

Q1:

str = '/path/eds/vs/accescontrol.dat/d=12520/file1.dat'
[x for x in str.split('/') if x[-4:] == '.dat']

给出:

['accescontrol.dat','file1.dat']

类似的技巧将回答Q2。

对于更高级的文件路径操作,我建议阅读os.path https://docs.python.org/2/library/os.path.html#module-os.path

答案 3 :(得分:0)

我建议将每个级别的文件夹/文件分成列表中的字符串。

path = '/path/eds/vs/accescontrol.dat/d=12520/file1.dat'.split("/")

这会使path = ['path', 'eds', 'vs', 'accescontrol.dat', 'd=12520', 'file1.dat']

然后从那里,您可以访问每个不同的部分。

答案 4 :(得分:0)

为什么不这样

from pathlib import Path
h=r'C:\Users\dj\Pictures\Saved Pictures'
path = Path(h)
print(path.parts)

Path: .
('C:\\', 'Users', 'dj', 'Pictures', 'Saved Pictures')