I am attempting to group related files associated with a .tif image. You can see from the list that there are 7 related files per group. I am looking for a way to group these files so that I can move them via shutil.move()
into various folders.
The following script is what I have unsuccessfully attempted based on this answer. The result is the same as the input files
list.
How can I tweak this to perform the groupings I am after?
import os, itertools
files = ['F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tfw',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif.aux.xml',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif.ovr',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif.vat.cpg',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif.vat.dbf',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif.xml',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tfw',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif.aux.xml',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif.ovr',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif.vat.cpg',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif.vat.dbf',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif.xml']
test = sorted(files)
grouped = [list(g) for _, g in itertools.groupby(test, lambda x: x.split('_')[1])]
Intended output:
[['F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tfw',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif.aux.xml',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif.ovr',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif.vat.cpg',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif.vat.dbf',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511759_sw.tif.xml'],
['F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tfw',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif.aux.xml',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif.ovr',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif.vat.cpg',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif.vat.dbf',
'F:\\juniper_project\\data\\raster\\deliverables\\OR\\reclass\\reclass_4511760_sw.tif.xml']]