1

この方法で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 を超えるバイナリ ファイルに対して実行すると、実際には実行が終了しますが、「セグメンテーション違反」というエラーも発生します。私はそれが間違っているのかわかりませんか?

4

0 に答える 0