liblas モジュールを使用して *.las ファイルから一度に多数の行を読み取るために、「from itertools import islice」を使用しようとしています。(私の目標はチャンクバイチャンクを読むことです)
次の質問: Python で一度に N 行を読み取る方法
islice() を使用して、イテレータの次の n 個の項目を取得できます。したがって、list(islice(f, n)) は、ファイル f の次の n 行のリストを返します。これをループ内で使用すると、ファイルが n 行のチャンクで提供されます。ファイルの最後では、リストが短くなる可能性があり、最終的に呼び出しは空のリストを返します。
次のコードを使用しました。
from numpy import nonzero
from liblas import file as lasfile
from itertools import islice
chunkSize = 1000000
f = lasfile.File(inFile,None,'r') # open LAS
while True:
chunk = list(islice(f,chunkSize))
if not chunk:
break
# do other stuff
しかし、私はこの問題を抱えています:
len(f)
2866390
chunk = list(islice(f, 1000000))
len(chunk)
**1000000**
chunk = list(islice(f, 1000000))
len(chunk)
**1000000**
chunk = list(islice(f, 1000000))
len(chunk)
**866390**
chunk = list(islice(f, 1000000))
len(chunk)
**1000000**
ファイル f が最後に到着すると、 islice は再起動してファイルを読み取ります。
提案と助けをありがとう。とてもありがたいです