传递文件的“数据”,而不是Python中的实际文件

2024-09-28 01:31:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个恢复解析python库,它接受pdf文件并返回JSON。代码如下所示:

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公开为一个无服务器函数,我认为不进行写操作可以节省时间

参考文献:


Tags: 文件数据代码apijsondatagetbytes
1条回答
网友
1楼 · 发布于 2024-09-28 01:31:30

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

因此,我们应该能够使用如下内容:

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

相关问题 更多 >

    热门问题