【问题标题】:Cython read binary file into string and returnCython 将二进制文件读入字符串并返回
【发布时间】:2017-06-23 12:46:59
【问题描述】:

想知道如何在 Cython 中读取二进制文件并将字符串返回给 Python。我有以下内容,但在 fread(buffer..) 行上出现错误。我对 C/Cython 不是很熟悉,所以如果有更简单的内置函数可以将二进制文件读入字符串,那将不胜感激

def read_file2(filename):
cdef FILE * cfile
cdef long length
filename_byte_string = filename.encode("UTF-8")
cdef char* fname = filename_byte_string
cdef char * buffer;

cfile = fopen(fname, "rb")
if cfile:
    fseek (cfile, 0, SEEK_END)
    length = ftell(cfile)
    fseek (cfile, 0, SEEK_SET)
    buffer = <char*>malloc(length)
    if buffer:
        fread(&buffer, 1, length, fname)

已解决:我收到以下错误:

read_numpy.pyx:64:33: Cannot assign type 'char *' to 'FILE *'

如何将缓冲区对象或包含文件字节表示的字符串返回给 Python?

【问题讨论】:

    标签: python c cython


    【解决方案1】:

    你误用了fname而不是cfile

    cfile = fopen(fname, "rb")
    if cfile:
        fseek (cfile, 0, SEEK_END)
        length = ftell(cfile)
        fseek (cfile, 0, SEEK_SET)
        buffer = <char*>malloc(length)
        if buffer:
            fread(&buffer, 1, length, fname) <---
    

    最后一行应该是:

      fread(&buffer, 1, length, cfile)
    

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      相关资源
      最近更新 更多