传递文件的 "data" 而不是 Python 中的实际文件

Pass a file's "data" instead of the actual file in Python

我正在使用接受 pdf 文件和 returns JSON 的简历解析 python 库。代码简单如下:

parsed_data = ResumeParser("file.pdf").get_extracted_data()

我想围绕这个公开一个 API,所以在 API 中,pdf 数据作为 base64 字符串发送。所以,我先把数据写入一个文件,然后运行上面的代码。我当前的代码如下所示:

def parse(b64data): 
    bytes = b64decode(b64data, validate=True)
    f = open('tmp_file.pdf', 'wb')
    f.write(bytes)
    f.close()
    parsed_data = ResumeParser("tmp_file.pdf").get_extracted_data()
    return parsed_data

有没有更好的方法来避免将数据写入文件?我将此 API 作为无服务器函数公开,我认为我可以通过不写来节省时间。

参考文献:

您正在使用的库似乎接受 BytesIO 对象作为向其传递包含文件名的字符串的替代方法。但是,它似乎还期望此 BytesIO 对象具有 name 属性,它从中提取扩展名,以便确定文件类型。因此,我们将向我们的 BytesIO 对象添加一个包含字符串 .pdf 的虚假 name 属性。

所以,我们应该可以使用这样的东西:

import io, base64

def parse(b64data): 
    bytes = base64.b64decode(b64data, validate=True)
    bytesio = io.BytesIO(bytes)
    bytesio.name = '.pdf'
    parsed_data = ResumeParser(bytesio).get_extracted_data()
    return parsed_data