Найдите python файлов, которые начинаются с той же строки, в списке путей к файлам - PullRequest
1 голос
/ 27 февраля 2020
[' D:\\2019-09-06_ECOSTRESS_L3_ET_PT-JPL_06627_012_20190906T075008_0601_02_ETinst.tif', ' D:\\2019-09-06_ECOSTRESS_L3_ET_PT-JPL_06627_012_20190906T075008_0601_02_ETinstUncertainty.tif', ' D:\\2019-09-06_ECOSTRESS_L3_ET_PT-JPL_06627_013_20190906T075100_0601_01_ETinst.tif', ' D:\\2019-09-06_ECOSTRESS_L3_ET_PT-JPL_06627_013_20190906T075100_0601_01_ETinstUncertainty.tif', ' D:\\2019-09-14_ECOSTRESS_L3_ET_PT-JPL_06749_010_20190914T043343_0601_02_ETinst.tif', ' D:\\2019-09-14_ECOSTRESS_L3_ET_PT-JPL_06749_010_20190914T043343_0601_02_ETinstUncertainty.tif', ' D:\\2019-10-29_ECOSTRESS_L3_ET_PT-JPL_07451_013_20191029T104129_0601_01_ETinst.tif', ' D:\\2019-10-29_ECOSTRESS_L3_ET_PT-JPL_07451_013_20191029T104129_0601_01_ETinstUncertainty.tif', ' D:\\2019-11-13_ECOSTRESS_L3_ET_PT-JPL_07680_016_20191113T050013_0601_01_ETinst.tif', ' D:\\2019-11-13_ECOSTRESS_L3_ET_PT-JPL_07680_016_20191113T050013_0601_01_ETinstUncertainty.tif', ' D:\\2019-11-13_ECOSTRESS_L3_ET_PT-JPL_07680_017_20191113T050105_0601_01_ETinst.tif', ' D:\\2019-11-13_ECOSTRESS_L3_ET_PT-JPL_07680_017_20191113T050105_0601_01_ETinstUncertainty.tif', ' D:\\2019-12-17_ECOSTRESS_L3_ET_PT-JPL_08207_001_20191217T034051_0601_01_ETinst.tif', ' D:\\2019-12-17_ECOSTRESS_L3_ET_PT-JPL_08207_001_20191217T034051_0601_01_ETinstUncertainty.tif']

У меня есть список путей к файлам в списке python. Я хочу найти все файлы, которые принадлежат одной и той же дате. Например, у файлов формата 4 имена начинаются с '2019-09-06'. Как я могу разделить этот список на меньшие списки, каждый из которых имеет файлы с одинаковой датой в начале? Я не знаю общих дат, поэтому решение должно быть в состоянии найти их динамически.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2020

Вы можете использовать словарь для хранения файлов с той же датой и датой, что и для ключа.

from collections import defaultdict
dates=defaultdict(list)
for path in paths:
    key,val=path[4:14],path[14:]
    dates[key].append(val)

0 голосов
/ 27 февраля 2020
import re
paths = [' D:\\2019-09-06_ECOSTRESS_L3_ET_PT-JPL_06627_012_20190906T075008_0601_02_ETinst.tif', ' D:\\2019-09-06_ECOSTRESS_L3_ET_PT-JPL_06627_012_20190906T075008_0601_02_ETinstUncertainty.tif', ' D:\\2019-09-06_ECOSTRESS_L3_ET_PT-JPL_06627_013_20190906T075100_0601_01_ETinst.tif', ' D:\\2019-09-06_ECOSTRESS_L3_ET_PT-JPL_06627_013_20190906T075100_0601_01_ETinstUncertainty.tif', ' D:\\2019-09-14_ECOSTRESS_L3_ET_PT-JPL_06749_010_20190914T043343_0601_02_ETinst.tif', ' D:\\2019-09-14_ECOSTRESS_L3_ET_PT-JPL_06749_010_20190914T043343_0601_02_ETinstUncertainty.tif', ' D:\\2019-10-29_ECOSTRESS_L3_ET_PT-JPL_07451_013_20191029T104129_0601_01_ETinst.tif', ' D:\\2019-10-29_ECOSTRESS_L3_ET_PT-JPL_07451_013_20191029T104129_0601_01_ETinstUncertainty.tif']
arrays=[]
dates = input().split(" ")
#input dates
for  path in paths :
      array = []
      for date in dates:                
            match = re.search(date,path)
            if match is not None:
                   array.append(path)
      arrays.append(array)

Я использовал регулярное выражение для сортировки. Вы можете ввести свои значения в массив дат, если хотите, но. Это дает вам список отсортированных списков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...