我正在寻找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
答案 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())