4

pyparsingを使用して大きなサイズのファイルを解析したいときに、この質問が発生します。ファイル全体のpyparsing文法をすでに作成しました。しかし、この大きなファイルを読んで、文字列をパーサーに1行ずつフィードする方法がわかりません。現在、私は次のような方法を使用しています。

pyparsingGrammer = some pyparsing grammar I created
PyparsingGrammar.parseString(open(filename).read())

ビッグのメモリ使用量を除いて、read()ラインフィードを使用するもう1つの動機は、パーサーをリアルタイムのケースに拡張して、情報がパーサーに1行続いて別の行にフィードされるようにすることです。

4

1 に答える 1

5

あなたができる:

with open(filename) as f:
     for line in f:
         PyparsingGrammar.parseString(line)

キーワードを使用するwithと、完了したらファイルが自動的に閉じられ、操作するためのハンドルが提供されます。

for x in something:
    do_something 

これは、反復可能ファイル(list, tuple, dictionaryPythonで反復可能なものなど)を調べるための標準的な方法です。

言及するのを忘れましたが、あなたはそれを理解したと思います。Pythonで
ファイルを開くと、リストの各行がアイテムでwith open(filename) as fある場所が表示されます。そのため、イテレータとしてlist扱うことができます。f

于 2012-09-28T06:46:08.690 に答える