вложенный для цикла - PullRequest
       11

вложенный для цикла

0 голосов
/ 29 мая 2010

Просто изучаю Python и пытаюсь сделать вложенный цикл for. В конце я хотел бы поместить в файл несколько адресов электронной почты, и этот скрипт найдет информацию, например, IP-адрес отправителя. Сейчас я тестирую его на моем /var/log/auth.log файле

Вот мой код:

#!/usr/bin/python

# this section puts emails from file(SpamEmail) in to a array(array)
in_file = open("testFile", "r")
array = in_file.readlines()
in_file.close()

# this section opens and reads the target file, in this case 'auth.log'
log = open("/var/log/auth.log", "r")
auth = log.readlines()

for email in array:
    print "Searching for " +email,
    for line in auth:
         if line.find(email) > -1:
                about = line.split()
                print about[0],
    print

Внутри «testfile» у меня есть слово «отключить», потому что я знаю, что оно находится в файле auth.log. Он просто не находит слово «отключить». В строке «if line.find (email)> -1:» я могу заменить электронную почту и поставить «отключить», сценарии найдут это нормально.

Есть идеи? Заранее спасибо. Gary

Ответы [ 2 ]

1 голос
/ 29 мая 2010

Я не совсем уверен, что вы спрашиваете, но очевидная проблема с вышеизложенным состоит в том, что readlines() возвращает список строк, каждая из которых (кроме потенциально последней) будет иметь \n терминатор строки , Так что email будет иметь новую строку в конце, поэтому не будет найден в line, если он не в самом конце.

Так что, возможно, что-то вроде:

with open('testFile', 'r') as f:
    emails= f.read().split('\n')
with open('/var/log/auth.log', 'r') as f:
    lines= f.read().split('\n')

for email in emails:
    for linei, line in enumerate(lines):
        if email in line:
            print 'Line %d, found:' % linei
            print line
0 голосов
/ 31 мая 2010

Я понял. Мне нужно было добавить from __future__ import with_statement.

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