关闭python pypdf写入时出现问题。获取值错误:关闭fi上的I/O操作

2024-09-29 17:13:49 发布

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

我想不出来 这个函数(类的一部分,用于将internet站点抓取为pdf)用于合并使用pypdf从web页面生成的pdf文件。在

这是方法代码:

def mergePdf(self,mainname,inputlist=0):
    """merging the pdf pages
    getting an inputlist to merge or defaults to the class instance self.pdftomerge list"""
    from pyPdf import PdfFileWriter, PdfFileReader
    self._mergelist = inputlist or self.pdftomerge
    self.pdfoutput = PdfFileWriter()

    for name in self._mergelist:
        print "merging %s into main pdf file: %s" % (name,mainname)
        self._filestream = file(name,"rb")
        self.pdfinput = PdfFileReader(self._filestream)
        for p in self.pdfinput.pages:
            self.pdfoutput.addPage(p)
        self._filestream.close()

    self._pdfstream = file(mainname,"wb")
    self._pdfstream.open()
    self.pdfoutput.write(self._pdfstream)
    self._pdfstream.close()

我一直收到这个错误:

^{pr2}$

但当我检查自我状态时,我得到:

<open file 'c:\python27\learn\dive.pdf', mode 'wb' at 0x013B2020>

我做错什么了?在

我很乐意得到任何帮助


Tags: orthetonameselfpdfpagesfile
1条回答
网友
1楼 · 发布于 2024-09-29 17:13:49

我发现了你的问题。你打电话给file()是对的。{不要打电话。在

您的问题是当您调用self.pdfoutput.write(self._pdfstream)时,输入文件仍然需要打开,因此您需要删除self._filestream.close()行。在

编辑:此脚本将触发问题。第一次写入成功,第二次写入失败。在

from pyPdf import PdfFileReader as PfR, PdfFileWriter as PfW

input_filename = 'in.PDF' # replace with a real file
output_filename = 'out.PDF' # something that doesn't exist

infile = file(input_filename, 'rb')
reader = PfR(infile)
writer = PfW()

writer.addPage(reader.getPage(0))
outfile = file(output_filename, 'wb')
writer.write(outfile)
print "First Write Successful!"
infile.close()
outfile.close()

infile = file(input_filename, 'rb')
reader = PfR(infile)
writer = PfW()

writer.addPage(reader.getPage(0))
outfile = file(output_filename, 'wb')
infile.close() # BAD!

writer.write(outfile)
print "You'll get an IOError Before this line"
outfile.close()

相关问题 更多 >

    热门问题