5.16 xreadlines -- ファイルの各行に対する効率のよい反復処理

バージョン2.1 以降で新規追加された 仕様です。

リリース 2.3 以降で撤廃された仕様です。 for line in file を代わりに使ってください。

このモジュールでは、あるファイル内の各行に対して効率的に反復を行える ような新たなオブジェクト型を定義します。xreadline オブジェクトは for 文や関数 filter() で必要とされるような、 0 から始まる単純かつ順序正しいインデクス付けを実装した配列型 です。

つまり、以下のコード

import xreadlines, sys

for line in xreadlines.xreadlines(sys.stdin):
    pass

は、

while 1:
    lines = sys.stdin.readlines(8*1024)
    if not lines: break
    for line in lines:
        pass

とだいたい同じ速度とメモリ消費になります。ただし前者は for 文のままなのでより明快です。

xreadlines( fileobj)
fileobj の内容にわたって反復を行うような、新しい xreadlines オブジェクトを返します。fileobj は、引数 sizehint を サポートする readlines() メソッドを持っていなければなりません。 注意: readlines() メソッドばデータをバッファするので、ファイル オブジェクトを非バッファリングに設定しても無視されます。

xreadlines オブジェクト s は以下の配列操作をサポートします:

操作  結果 
s[i] si 行目

i の値が 0 から始まる連続した数でない場合、 このコードは 例外RuntimeError を送出します。

ファイルの最後の行が読み出された後、このコードは例外 IndexError を送出します。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。