2

Python で非常に単純なログ パーサー スクリプトを作成しようとしています。ターゲット マシン上のスクリプトがこのエラーを返していることを除いて、すべてが計画どおりに進んでいます (スクリプトは UNIX マシン上で正常に動作します)。

for name in root.namelist():
Attribute Error: 'str' object has no attribute 'namelist'

Python のバージョンは同じようです (両方のマシンで 2.7.3)。何か案は?

スクリプト自体:

import zipfile
import os
import re

string1 = "searchstring" # raw_input("usrinput: ")

try:
   root = zipfile.ZipFile("/home/testuser/docs/testzip.zip", "r")
except:
   root = "testfolder/"
for name in root.namelist():
    if name.find(".") > 0:
        f = root.open(name)
        searchlines = f.readlines()
        for i, line in enumerate(searchlines):
            regex1 = "(.*)" + re.escape(string1) + "(.*)"
            if re.match (regex1, line):
                for l in searchlines[i-4:i+4]: print l,
                print
4

2 に答える 2

2

これはroot = "testfolder/"、属性として名前リストがないためです。

ルートの型は文字列です

コードを見るとroot = zipfile.ZipFile("/home/testuser/docs/testzip.zip", "r")、例外が生成されたことを意味します

例外ブロックで使用except Exception, ex:してから印刷ex.messageして、生成されている例外のタイプを理解してください

于 2013-01-10T08:16:50.293 に答える
1

これは、namelist()は でのみ使用でき、zipfileでは使用できないためstringです。

これは、zip ファイルを開くことができない場合に発生します。zip ファイルが配置されているパスを確認します。

これを試して、出力を確認してください。

try:
   root = zipfile.ZipFile("/home/testuser/docs/testzip.zip", "r")
except Exception, msg:
   print msg
   root = "testfolder/"

有効な zip ファイルで試したところ、プログラムは正常に動作しました。

于 2013-01-10T08:20:59.587 に答える