Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 &引用;“文件未打开以供读取”;PDF拆分后的烧瓶_Python_Api_Flask_Python Requests - Fatal编程技术网

Python &引用;“文件未打开以供读取”;PDF拆分后的烧瓶

Python &引用;“文件未打开以供读取”;PDF拆分后的烧瓶,python,api,flask,python-requests,Python,Api,Flask,Python Requests,我正在尝试拆分一个PDF文件,该文件作为此Flask API的post请求获取。我正在使用PyPDF2处理pdf文件,当我试图发布新拆分的pdf文件时,遇到了这个错误:“IOError:文件未打开以供阅读”。我试图在发帖前再次打开它,但这会导致另一种类型的错误 from flask import render_template, request from app import app from PyPDF2 import PdfFileWriter, PdfFileReader import r

我正在尝试拆分一个PDF文件,该文件作为此Flask API的post请求获取。我正在使用PyPDF2处理pdf文件,当我试图发布新拆分的pdf文件时,遇到了这个错误:“IOError:文件未打开以供阅读”。我试图在发帖前再次打开它,但这会导致另一种类型的错误

from flask import render_template, request
from app import app
from PyPDF2 import PdfFileWriter, PdfFileReader
import requests


@app.route('/')
def start():
    return render_template('home.html')


#upload-route
@app.route('/upload', methods = ['POST'])
def upload():
    pdf_data = None 
    split_pages = []
    if 'pdf' in request.files:
        incoming_pdf = request.files['pdf']
        pdf_data = PdfFileReader(incoming_pdf, 'rb') 
        for i in range(pdf_data.numPages):
            output = PdfFileWriter()
            output.addPage(pdf_data.getPage(i))
            with open("document-page%s.pdf" % i, "wb").read() as outputStream:
            ##new_page = output.write(outputStream)
                try:
                    split_pages.append(output)
                    print('Created: {}'.format("document-page%s.pdf" % i))
                    files  = {'userfile': outputStream }
                    upload_url ='*URL IM POSTING TO*'
                    auth_upload={
                        *AUTH KEYS*
                    }
                    r=requests.post(url=upload_url, files=files,data=auth_upload)
                finally:
                    outputStream.close()

    else:
        return "please upload a file to process"


我知道这可能是一个非常基本的问题,但我花了大量的时间在这个问题上,我不再直接思考了。

我刚刚看过你的代码,那又如何

从PyPDF2导入PdfileWriter、PdfileReader
以open('./reklamacja.pdf',rb')作为我的pdf:
pdf_data=PdfileReader(my_pdf)
对于范围内的i(pdf_data.numPages):
输出=PdfileWriter()
#output.addPage(pdf_data.getPage(i))
output.insertPage(pdf_data.getPage(i))
filename=“文档页%s.pdf”%i
以open(文件名,“wb”)作为输出流:
output.write(outputStream)
打开(文件名为“rb”)作为要发送的文件:
r=请求。post('http://someurl.bin“,files={'myname':文件_to _send})
{其他一些代码…}
将它构建到您的flask代码中,它应该可以工作。 对我来说,您只是在“try”块中将它复杂化了一点:)
希望这能解决您的问题。

“文档页%s.pdf”%i
是在字符串中插入值的旧方法。您的Python版本现在是否支持这一点?现在我们希望看到类似于
“documentpage{}.pdf.format(i)
的东西。诚然,我们还希望看到除
IOError:File not open for reading
之外的其他错误,但可能
%i
会混淆错误捕获。您是否不是以Write/Binary打开此文件,然后调用其read函数<代码>打开(“文档页%s.pdf”%i,“wb”)。读取()。那似乎不正确谢谢你!这最终对我有用。我终于明白了,我必须以不同的方式处理写作和阅读,再次感谢!