2

私は、ログ ファイルを解析し、IP アドレスのトップ ヒットとその他のいくつかを返すプログラムに取り組んでいます。現在、私は問題を抱えており、現在行っていることに対するこの問題の答えを解釈できません。これは私のコードのすべてです:

import gzip
from collections import Counter
logFileName = open('C:\\Users\\Pawlaczykm\\Desktop\\fileNames.txt', 'r')
ipAdd = []
landingPages = []
ALL_ipAdd = []
ALL_landingPages = []
# everything after this line gets done to all files
for line in logFileName.readlines():
# rstrip removes a blank line from output
# print 'Summary of: ' + line.rstrip()

# use gzip to decompress the file
with gzip.open('C:\\Users\\Pawlaczykm\\Desktop\\logFiles\\' + line.rstrip() + '.gz', 'rb') as f:
    # we extract the ip addresses in lines 15-18
    for eachLine in f:
        parts = eachLine.split('\t')
        if len(parts) > 1:
            ipAdd.append(parts[2])
ALL_ipAdd.append(ipAdd)
# use gzip to decompress the file
with gzip.open('C:\\Users\\Pawlaczykm\\Desktop\\logFiles\\' + line.rstrip() + '.gz', 'rb') as f:
    # we extract the landing pages
    for eachLine in f:
        parts = eachLine.split('\t')
        if len(parts) > 1:
            variable = parts[8].split('?')[0]
            landingPages.append(variable)
v): (-v, k))[:10]
ALL_landingPages.append(landingPages)

ALL_ipAddDict = dict(Counter(ALL_ipAdd).most_common())
sortedALL_ipAdd = sorted(ALL_ipAddDict.iteritems(), key=lambda (k, v): (-v,     k))[:10]
print 'Top IPs of all files'
print(sortedALL_ipAdd)
ALL_LandingPageDict = dict(Counter(ALL_landingPages).most_common())
sortedALL_LandingPage = sorted(ALL_LandingPageDict.iteritems(), key=lambda     (k, v): (-v, k))[:10]
print 'Top landing pages of all files'
print (sortedALL_LandingPage)

今私が問題を抱えているのは次の行です:

ALL_ipAddDict = dict(Counter(ALL_ipAdd).most_common())

プログラム全体を実行したときの出力は次のとおりです。

Traceback (most recent call last):
  File "C:/Users/Pawlaczykm/PycharmProjects/LogParse/parseText.py", line 35, in <module>
    ALL_ipAddDict = dict(Counter(ALL_ipAdd).most_common())
  File "C:\Python27\lib\collections.py", line 477, in __init__
self.update(*args, **kwds)
  File "C:\Python27\lib\collections.py", line 567, in update
self[elem] = self_get(elem, 0) + 1
 TypeError: unhashable type: 'list'

誰か助けてくれませんか?これはイライラします。

4

2 に答える 2