У меня есть три файла в каталоге, и я хотел, чтобы они были сопоставлены со списком строк в словаре.
Файлы в dir
выглядят следующим образом,
DB_ABC_2_T_bR_r1_v1_0_S1_R1_001_MM_1.faq.gz
DB_ABC_2_T_bR_r1_v1_0_S1_R2_001_MM_1.faq.gz
DB_DEF_S1_001_MM_R1.faq.gz
DB_DEF_S1_001_MM_R2.faq.gz
В list
есть часть имени файла, как,
ABC
DEF
Так вот что япопробовал,
import os
import re
dir='/user/home/files'
list='/user/home/list'
samp1 = {}
samp2 = {}
FH_sample = open(list, 'r')
for line in FH_sample:
samp1[line.strip().split('\n')[0]] =[]
samp2[line.strip().split('\n')[0]] =[]
FH_sample.close()
for file in os.listdir(dir):
m1 =re.search('(.*)_R1', file)
m2 = re.search('(.*)_R2', file)
if m1 and m1.group(1) in samp1:
samp1[m1.group(1)].append(file)
if m2 and m2.group(1) in samp2:
samp2[m2.group(1)].append(file)
Я хотел, чтобы вышеуказанный скрипт нашел совпадения из m1 и m2 и собрал их в словарях samp1
и samp2
.Но приведенный выше скрипт не находит совпадения, в пределах if loop
.Теперь samp1
и samp2
пусты.
Вот как должен выглядеть вывод для samp1
и samp2
:
{'ABC': [DB_ABC_2_T_bR_r1_v1_0_S1_R1_001_MM_1.faq.gz, DB_ABC_2_T_bR_r1_v1_0_S1_R2_001_MM_1.faq.gz], 'DEF': [DB_DEF_S1_001_MM_R1.faq.gz, DB_DEF_S1_001_MM_R2.faq.gz]}
Любая помощь будет принята с благодарностью