1
我正在嘗試將與.tif圖像關聯的相關文件分組。您可以從列表中看到每個組有7個相關文件。我正在尋找將這些文件分組的方法,以便我可以通過shutil.move()
將它們移動到各種文件夾中。如何分組相關的.tif文件?
以下腳本是我根據this answer嘗試失敗的原因。結果與輸入files
列表相同。
我該如何調整這個來執行我之後的分組?
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])]
預期輸出:
[['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']]
謝謝,我注意到,它的作品在這個例子中,但如果有一個名爲4511760_se'文件',它會被集中到'文件[1]'中,因爲'se'方向不被考慮。我想一個(不太靈活的)解決方法是分割路徑:'[list(g)for _,g in itertools.groupby(test,lambda x:x [63:73])]' – Borealis
如果你'請確保您的密鑰始終是數字,您可以在列表中篩選該密鑰,而不是嘗試按索引選擇密鑰 – canyon289