我正在尝试使用“from itertools import islice”,以便使用 liblas 模块一次从 *.las 文件中读取多行。(我的目标是逐块阅读)
跟随问题: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 重新开始读取文件。
感谢您的任何建议和帮助。非常感谢