Есть ли лучший способ?

#python

#python

Вопрос:

У меня есть файл, скажем abc.txt , в формате ниже:

   : @group2 : ALL  
  : @grp_xvz : ALL  
  : @group_abc_app: ALL  
  : @group_1_abc : ALL  
  : @group_2_xyz : ALL  
  : @group_3_def@@nmo_hosts : ALL
  

Мне нужно выполнить поиск определенных записей и проверить, соответствует ли размер файла abc.txt > 220

   : @group_2_xyz : ALL   or 
  : @group_3_def@@nmo_hosts : ALL   
and  filesize of abc.txt > 220  
  

В bash я могу сделать так

 if grep --quiet " [[:blank:]]:[[:blank:]]@group_2_xyz[[:blank:]]*:[[:blank:]]ALL" abc.txt   
||  
 grep --quiet  [[:blank:]]:[[:blank:]]@group_3_def[@A-Za-z0-9_][[:blank:]]:[[:blank:]] abc.txt   
and                                                   
[ du -sb abc.txt | awk '{print $1}' -gt 220 ]; then  

..do..something
  

Как сделать то же самое в python? Я пытался использовать «re.findall», но не уверен, смогу ли я использовать там несколько условий? или если кто-то может предложить лучший способ?

 re.findall(r' s*:s*@group_2_xyzs*:s*ALL', open('abc.txt,'r').read())
  

Заранее спасибо.

Комментарии:

1. Спасибо Ponnarasu за помощь в очистке форматирования. Приветствуется

Ответ №1:

Попробуйте это:

 import os, re

match = re.search(
    r'^  *: *(@group_2_xyz|@group_3_def@@nmo_hosts) *: *ALL$',
    open('abc.txt').read(), re.M
    )

print(os.stat('abc.txt').st_size > 220, match is not None)
  

Комментарии:

1. @bob. Если вы нашли ответ полезным, пожалуйста, подумайте о том, чтобы принять его (т. Е. Нажать на галочку).

2. Спасибо, Эхуморо! Извините, я здесь новичок, поэтому для настройки потребуется некоторое время.