2012-01-05 4 views
0

ログファイル内の単語を含む行を出力しようとしています。Pythonのログファイル内で特定の行を読み書きする問題

私はいくつかの研究を行いましたが、これを実装するための良い方法はまだ見つかりませんでした。

私は現在、このコードを持っている:この見回した後

FileInput = open(FILE, "r", encoding='utf-8') 

for line in FileInput: 
    if "DATA: " in line: 
     print line 

は、ほとんどの人がそれをやっている方法であるようだが、私は次のエラーを取得する:TypeError例外を:Unicodeに強制変換:必要文字列またはバッファを、NoneTypeが見つかりました。 。

私は「DATA:」から設定された長さを知っていて、行は16進値0Aで終わります。

+0

"16進値0A" - 改行を意味しますか?そして、これはPython 2またはPython 3ですか? –

+0

新しい行と同じです。私は、データを16進数で、または行単位で刻むのに最も良い方法は何か分かりませんでしたか?それはPython 3です。 –

+0

Python 3では、 'print(line)'と言っているはずです。そうでなければ、 'SyntaxError'を得るでしょう。私はこれがあなたが使っている正確なコードではないという気持ちを持っています。 –

答えて

1

いずれかの私たちが見ることができます(適切な文字列が含まれていないファイルの変数その値は、ファイルを開いて結果をここに貼り付ける前に "print(FILE)"することができますか?そのファイルはutf-8と互換性のある方法でエンコードされていません。それを良いエディタ(jEditやNotepad ++のような)で開き、エディタがあなたに何を伝えているかを見てから、utfの代わりにそのエンコーディングを指定してください。

+0

変数を含むSQLiteファイル内に破損がありました。ご協力ありがとうございました。 –

+0

Zekiありがとう、正式に答えを受け入れることはできますか?答えの左側にあるチェックボックスの輪郭をクリックするだけです。 :)乾杯 –

0

は、あなたが試すこちらをご覧Unicode HOWTO

+0

あなたの助けてくれてありがとうRanRagしかし、残念ながら私はまだ同じエラーメッセージが表示されます。 –

+0

あなたのコードで 'if line is None None'をチェックしてみてください。 – RanRag

+0

同じエラーです。また、あなたの継続的な助けに感謝します。 –

0

を取る

import codecs 
f = codecs.open(FILE, encoding='utf-8', mode='r') 

を使用する必要があると思われるこの:

FileInput = open(FILE, "r") 
for line in FileInput: 
    if "DATA: " in line: 
     print(line) 
+0

Iveはすべてのバリエーションを試しましたが、FileInputセクションでも同じエラーが発生しています。 ご協力いただきありがとうございます。 –