一部のレコードをスキップしてバイナリファイルを読み取るために、cython を使用して Python 関数をコンパイルしたいと考えています (メモリが不足するため、ファイル全体を読み取ってからスライスする必要はありません)。私はこのようなものを思い付くことができます:
def FromFileSkip(fid, count=1, skip=0):
if skip>=0:
data = numpy.zeros(count)
k = 0
while k<count:
try:
data[k] = numpy.fromfile(fid, count=1, dtype=dtype)
fid.seek(skip, 1)
k +=1
except ValueError:
data = data[:k]
break
return data
そして、次のように関数を使用できます。
f = open(filename)
data = FromFileSkip(f,...
ただし、関数「FromFileSkip」をcythonでコンパイルするには、関数に含まれるすべてのタイプを定義したいので、ファイルハンドラーも「fid」します。整数などの「標準」型ではないため、cythonでその型を定義するにはどうすればよいですか。ありがとう。