この方法でpython 2.7.3でバイナリファイルを読んでいます:
import os, struct
from numpy import *
win_span = 8
coinc_window = zeros(2)
event = asarray((False, False, False, False))
Statistics = zeros(5)
with open("myfile", "rb") as f:
byte = f.read(8)
while byte != "":
time_bin = struct.unpack("<Q", byte)[0]
byte = f.read(2)
channel_tag = struct.unpack("<H", byte)[0]
if time_bin > coinc_window[1] + win_span:
Statistics[4] += event[0]*event[2]
event = asarray((False, False, False, False))
coinc_window = coinc_window[::-1]
coinc_window[1] = time_bin
event[channel_tag-1] = True
Statistics[channel_tag-1] += 1
byte = f.read(8)
print "Fin"
小さなバイナリ ファイル (~2MB) では正常に動作しますが、サイズが ~6MB を超えるバイナリ ファイルに対して実行すると、実際には実行が終了しますが、「セグメンテーション違反」というエラーも発生します。私はそれが間違っているのかわかりませんか?