Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将base64图像转换为内存中的文件_Python_Io - Fatal编程技术网

在Python中将base64图像转换为内存中的文件

在Python中将base64图像转换为内存中的文件,python,io,Python,Io,我有一个json文件,其中包含base64图像中的简历,在读取文件内容之前,我需要对其进行解码。目前我的过程是1)解码2)另存为物理文件3)将它们重新读入python以获取内容 我希望避免第2步,在内存中创建文件。我已经成功地为PDF和DOCx文件完成了这项工作,但我无法让它为doc文件工作。因为docx2txt不读取Doc文件,所以我使用操作系统将它们转换为docx以打开并另存为。我可以用物理文件来实现这一点,但不能用BytesIO来实现。下面是我的代码,还有我的错误。你知道我做错了什么,或者

我有一个json文件,其中包含base64图像中的简历,在读取文件内容之前,我需要对其进行解码。目前我的过程是1)解码2)另存为物理文件3)将它们重新读入python以获取内容

我希望避免第2步,在内存中创建文件。我已经成功地为PDF和DOCx文件完成了这项工作,但我无法让它为doc文件工作。因为docx2txt不读取Doc文件,所以我使用操作系统将它们转换为docx以打开并另存为。我可以用物理文件来实现这一点,但不能用BytesIO来实现。下面是我的代码,还有我的错误。你知道我做错了什么,或者有更好的方法吗

#Works for PDFs
resume= (df.iloc[76]['Candidate_Resume_Attachment_Base64_Image'])
resume_bytes = resume.encode('ascii')
decoded = base64.decodebytes(resume_bytes)
result = BytesIO()
result.write(decoded)
pdfReader = PyPDF2.PdfFileReader(result)
page_count = pdfReader.numPages
pdf_total=[]
for i in range(page_count):
    page = pdfReader.getPage(i)
    original=(page.extractText())
    pdf_total.append(original)
print(pdf_total)

#Works for DOCX files too
resume = (df.iloc[180]['Candidate_Resume_Attachment_Base64_Image'])
resume_bytes = resume.encode('ascii')
decoded = base64.decodebytes(resume_bytes)
result = BytesIO()
result.write(decoded)
original = docx2txt.process(result)
print(original)

#Cant get it to work for DOC files
message=((df.iloc[361]['Candidate_Resume_Attachment_Base64_Image']))
resume_bytes = message.encode('ascii')
decoded = base64.decodebytes(resume_bytes)
word = win32.gencache.EnsureDispatch('Word.Application')
word.Visible = False
result = BytesIO()
result.write(decoded)
doc = word.Documents.Open(result)
doc = word.ActiveDocument
doc.DisplayAlerts = False
doc.Activate ()
doc.Repaginate()
num_of_sheets = doc.ComputeStatistics(2)

#traceback error
Traceback (most recent call last):

  File "<ipython-input-271-aefb69ec27f4>", line 9, in <module>
    doc = word.Documents.Open(result)

  File "C:\Users\Rizwan\AppData\Local\Temp\gen_py\3.8\00020905-0000-0000-C000-000000000046x0x8x7\Documents.py", line 93, in Open
    ret = self._oleobj_.InvokeTypes(19, LCID, 1, (13, 0), ((16396, 1), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17), (16396, 17)),FileName

com_error: (-2147352571, 'Type mismatch.', None, 16)
#适用于PDF
resume=(df.iloc[76]['Candidate\u resume\u Attachment\u Base64\u Image']
resume\u bytes=resume.encode('ascii')
decoded=base64.decodebytes(恢复字节)
结果=BytesIO()
结果。写入(解码)
pdfReader=PyPDF2.PdfileReader(结果)
页数=pdfReader.numPages
pdf_total=[]
对于范围内的i(页数):
page=pdfReader.getPage(i)
原始=(page.extractText())
pdf_总计。追加(原件)
打印(pdf格式,共页)
#也适用于DOCX文件
resume=(df.iloc[180]['Candidate\u resume\u Attachment\u Base64\u Image']
resume\u bytes=resume.encode('ascii')
decoded=base64.decodebytes(恢复字节)
结果=BytesIO()
结果。写入(解码)
原始=docx2txt.process(结果)
印刷品(原件)
#无法将其用于文档文件
message=((df.iloc[361]['Candidate\u Resume\u Attachment\u Base64\u Image']))
resume_bytes=message.encode('ascii')
decoded=base64.decodebytes(恢复字节)
word=win32.gencache.EnsureRedispatch('word.Application')
word.Visible=False
结果=BytesIO()
结果。写入(解码)
doc=word.Documents.Open(结果)
doc=word.ActiveDocument
doc.DisplayAlerts=False
单据激活()
重新分页()文件
图纸数量=文件计算(2)
#回溯错误
回溯(最近一次呼叫最后一次):
文件“”,第9行,在
doc=word.Documents.Open(结果)
文件“C:\Users\Rizwan\AppData\Local\Temp\gen\u py\3.8\00020905-0000-0000-C000-0000000000 46x0x8x7\Documents.py”,第93行,打开
ret=self._oleobj_uj.InvokeTypes(19,LCID,1,(13,0),((16396,1),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17),(16396,17)),文件名)
com_错误:(-2147352571,“类型不匹配”,无,16)

*。doc是一种旧的二进制格式。我认为docx2txt不支持它。您需要找到另一个word库。正确,如上所述,我没有使用docx2txt打开doc文件。我使用操作系统打开doc文件并另存为docx。