[Tutor] Dict question

Nate Custer gncuster@firehead.org
13 Jun 2001 18:28:04 -0500


--=-AGVnSkuT5LiNtNpkWBA5
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Hi all,

I am calling a dict (format should be {string: [list]} ). It fails as:

  File "guardian_sum.py", line 45, in scan
    l.append(error_ip)
AttributeError: 'string' object has no attribute 'append'

Why does the error_dict.get() return a string?

Thanks in advance,

Nate Custer

====================================Begin Code
==========================
error_dict = {}

def scan():
    guardian = open("/var/log/guardian/guardian.log", 'r')
    ipchains = open("/home/nsc/ipchains.log", 'w')
    odd = open("/home/nsc/odd.log", 'w')

    nums = [ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' ]
    days = [ 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    blocked_host = []

    while 1:
        # read the line
        line = guardian.readline()
        if not line: break
        
        if line[:3] in days:

            word = string.split (line)
            for w in word:
                if 'IDS' == w[:3]:
                    error = w
                if w[0] in nums:
                    error_ip = w


            if error_dict.has_key(error):
                l = error_dict.get(error)
                l.append(error_ip)
                append = {error: l}
                error_dict.update (append)
            else:
                x = [`error_ip`]
                append = {error: x}
                error_dict.update (append)

--=-AGVnSkuT5LiNtNpkWBA5
Content-Type: text/html; charset=utf-8

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/0.9.99.0">
</HEAD>
<BODY>Hi all,<br>
<br>
I am calling a dict (format should be {string: [list]} ). It fails as:<br>
<br>
 &nbsp;File &quot;guardian_sum.py&quot;, line 45, in scan<br>
 &nbsp;&nbsp;&nbsp;l.append(error_ip)<br>
AttributeError: 'string' object has no attribute 'append'<br>
<br>
Why does the error_dict.get() return a string?<br>
<br>
Thanks in advance,<br>
<br>
Nate Custer<br>
<br>
====================================Begin Code ==========================<br>
error_dict = {}<br>
<br>
def scan():<br>
 &nbsp;&nbsp;&nbsp;guardian = open(&quot;/var/log/guardian/guardian.log&quot;, 'r')<br>
 &nbsp;&nbsp;&nbsp;ipchains = open(&quot;/home/nsc/ipchains.log&quot;, 'w')<br>
 &nbsp;&nbsp;&nbsp;odd = open(&quot;/home/nsc/odd.log&quot;, 'w')<br>
<br>
 &nbsp;&nbsp;&nbsp;nums = [ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' ]<br>
 &nbsp;&nbsp;&nbsp;days = [ 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']<br>
 &nbsp;&nbsp;&nbsp;blocked_host = []<br>
<br>
 &nbsp;&nbsp;&nbsp;while 1:<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# read the line<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line = guardian.readline()<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not line: break<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if line[:3] in days:<br>
<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word = string.split (line)<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for w in word:<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if 'IDS' == w[:3]:<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error = w<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if w[0] in nums:<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_ip = w<br>
<br>
<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if error_dict.has_key(error):<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l = error_dict.get(error)<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l.append(error_ip)<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;append = {error: l}<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_dict.update (append)<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = [`error_ip`]<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;append = {error: x}<br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error_dict.update (append)</BODY>
</HTML>

--=-AGVnSkuT5LiNtNpkWBA5--