使用python进行文件字符串匹配

时间:2019-07-12 18:51:30

标签: python glob

我正在寻找python中最好的模块/方式,以基于文件名字符串的2个段来配对文件,并在该对上执行功能,然后继续查找下一个对。因此,在下面的示例中,我希望将具有A2000089和1.tif的文件配对在一起,然后找到对A2000097和1.tif的配对,依此类推。 Glob可以做这样的事情吗?

MOD17A2H.A2000089.h10v04.006.2015137071411_tif__1.tif
MOD17A2H.A2000089.h10v04.006.2015137071411_tif__2.tif

MOD17A2H.A2000089.h10v04.006.2015137071400_tif__1.tif
MOD17A2H.A2000089.h10v04.006.2015137071400_tif__2.tif

MOD17A2H.A2000097.h10v04.006.2015137071311_tif__1.tif
MOD17A2H.A2000097.h10v04.006.2015137071311_tif__2.tif

MOD17A2H.A2000097.h10v04.006.2015137071300_tif__1.tif
MOD17A2H.A2000097.h10v04.006.2015137071300_tif__2.tif

1 个答案:

答案 0 :(得分:0)

正如评论者所说,这不可能直接通过glob实现。一种简单的方法是在对之前先对它们进行预先准备。

import glob
import os
from collections import defaultdict


pairs = defaultdict(list)
for path in glob.glob('*.tif'):
    base, _ = os.path.basename(path).split('__')
    pairs[base].append(path)

assert all(len(pair) == 2 for pair in pairs.values())