Все,
имеют некоторые значения с плавающей запятой, хранящиеся в двоичном файле, и я читаю их обратно.Windows 10, x64, Anaconda 5.1, Python 3.6, Numpy 0.14.1.Файл открыт с флагом 'rb'.Чтение с помощью np.fromfile работает нормально, за исключением случаев, когда я пытался читать за пределами файла.У меня есть кусок кода, который проверяет, находится ли файл в EOF
try:
_ = struct.unpack('f', f.read(4))[0]
# if successfull, means we did something wrong, should be an exception thrown
raise RuntimeError("There is something wrong with KDD file, it's TOO LONG!")
except struct.error as ex:
# got and exception, file is ok, return good values
pass
, который в основном проверяет, что я читаю все из файла.Работает очень хорошо.Сегодня я поиграл с ним и подумал, что могу удалить зависимость от struct
и просто заменить строку _ = struct.unpack('f', f.read(4))[0]
на _ = np.fromfile(f, dtype=np.float32, count=1, sep="")
, которая должна получить другое исключение и обработать его таким же образом, ...
Но!Никаких исключений не было, ни одного, и я получил свой собственный RuntimeError.Это ошибка?Как вообще я предполагаю узнать, читаю ли я за пределами EOF?