Python で、HDFS サーバーに保存されている複数のテキスト ファイルからデータ行を読み取る方法を見つけようとしています。各行を解析し、データの一部のみを保持する必要があるため、ファイルをローカルに保存しないことを好みます。
サーバーに接続し、特定のフォルダー内のすべてのファイルを調べ、各ファイルからすべての行を読み取り、それらに対して (この質問とは無関係に) アクションを実行する方法が必要です。
これを行う Pythonic の方法は、itertools.chain を使用することです。ただし、ファイルを反復処理してからファイル内の行を反復処理し、一度に 1 行ずつ生成する小さなユーティリティ ジェネレータ関数を作成できます。このようなもの:
def lines_in_files(connection):
for f in # some code which fetches a files at a time from the connection
for line in f:
yield line
取得したファイル オブジェクトがすべてのファイル メソッドをサポートしていない場合は、実行する前にその内容を StringIO でラップしますfor line in
。