2015-09-14 2 views
1

У меня есть файл, содержащий весь список шаблонов. Шаблоны имеют этот формат (высокий: низкий). высокий и низкий, разделенные двоеточием.Python: Поиск шаблонов из файла1 в списке файлов

Примеры моделей в file1:

-6447867851221037056: -3788579599719006014

-6449238495544274944: -3932696454242172736

-6449265231715692544: -4004752252983770939

-6449203349826891776: -2995947018784538426

-6447968581089030 144: -3659104829784325951

-6449244980944891904: -1059398397250633536

-6449247532155465728: -1915082300761767744

-6447984223359922176: -4220924871888797497

Теперь у меня есть список файлов в каталоге поиска. Я хочу искать шаблоны из вышеуказанного файла во всех файлах каталога поиска, который соответствует файлу * yyyy-mm-dd-hh * pattern.

например:

Искать все модели из file1 в каталоге поиска с именем файла шаблона * 2015-09-07-06 *

search_file.2015-09-07-05-45

search_file.2015-09-07-06-47

search_file.2015-09-07-06-48

search_file.2015-09-07-06-50

search_file.2015-09-07-06-52

Я знаю, как сделать это в Баш (Grep -f file1 * 2015- 09-07-06 *). Но я новичок в python и очень мало понимаю, как двигаться дальше. Любой вид указателей ценится

ответ

0

Checkout этот пакет: https://amoffat.github.io/sh/

Это позволит вам запустить команду оболочки в питона легко.

Вы можете использовать pip для его установки.

0

Эффективный и простой способ - с командами оболочки. Надеюсь, вы будете знать os.system для выполнения команд оболочки в python. Я пробовал такую ​​же логику в python.

import glob 
    file_list = glob.glob("*2015-09-07-06*") 

    input_filename = "file1.txt" 
    with open(input_filename,'r') as input: 
     input_data = input.readlines() 

    for each_file in file_list: 
     open_file = open(each_file,'r') 
     file_data = open_file.readlines() 
     identified = set(input_data) & set(file_data) 
     if identified: 
      print "filename : " + str(each_file)+" : "+str(identified) 
0
import re 
def searchpattern(): 
    with open("file1.txt", 'r') as fobj: 
     f = fobj.readlines() 
     pattern = '2015-09-07-06' 

     for i in f: 
      m = re.search(pattern, i) 
      if m: 
       print(i) 
      else: 
       pass 
if __name__ == '__main__': 
    searchpattern() 

Выход:

2015-09-07-06-45 
2015-09-07-06-46 
Смежные вопросы