Чтение бинарных файлов на Cython - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь прочитать двоичный файл на Cython.Ранее это работало в Python, но я хочу ускорить процесс.Этот код ниже был написан как ознакомительная и логическая проверка перед написанием полного модуля.Как только этот раздел будет завершен, код будет расширен для чтения в нескольких файлах по 400 Мб и обработки.

Была создана функция, которая открывает файл, считывает количество точек данных и возвращает их в массив.

from libc.stdlib cimport malloc, free 
from libc.stdio cimport fopen, fclose, FILE, fscanf, fread

def readin_binary(filename, int number_of_points):
    """
    Test reading in a file and returning data
    """
    header_bytes = <unsigned char*>malloc(number_of_points)
    filename_byte_string = filename.encode("UTF-8")
    cdef FILE *in_binary_file
    in_binary_file = fopen(filename_byte_string, 'rb')
    if in_binary_file is NULL:
        print("file not found")
    else:                       
        print("Read file {}".format(filename))
        fread(&header_bytes, 1, number_of_points, in_binary_file)
    fclose(in_binary_file)
    return header_bytes    

print(hDVS.readin_binary(filename, 10))

Код компилируется.

При запуске кода возникает следующая ошибка:

Ошибка перестала работать Python

Я играл с этим несколько днейсейчас.Я думаю, что есть простая ошибка, но я не могу видеть это.Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...