Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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 PyPDF2追加文件问题_Python - Fatal编程技术网

Python PyPDF2追加文件问题

Python PyPDF2追加文件问题,python,Python,我需要编写脚本,将图像转换为PDF文件,并合并成一个tchem 我曾尝试使用img2pdf和PYPDF2,但出现了错误。 谁能看看,告诉我我做错了什么 import img2pdf import os from PyPDF2 import PdfFileReader, PdfFileMerger, PdfFileWriter merger = PdfFileMerger() path = input() for root,dir,files in os.walk(path):

我需要编写脚本,将图像转换为PDF文件,并合并成一个tchem

我曾尝试使用img2pdf和PYPDF2,但出现了错误。 谁能看看,告诉我我做错了什么

import img2pdf
import os
from PyPDF2 import PdfFileReader, PdfFileMerger, PdfFileWriter

merger = PdfFileMerger()
path = input()

for root,dir,files in os.walk(path):
        for eachfile in files:
            if "pdf" not in eachfile:
                os.chdir(root)
                PDFfile = img2pdf.convert((eachfile,), dpi=None, x=None, y=None)
                merger.append(fileobj=PDFfile)
merger.write(open("out.pdf", "wb"))
错误

回溯(最近一次呼叫最后一次):
文件“C:/Users/ms/Desktop/Desktop/test.py”,第13行,在
append(fileobj=PDFfile)
文件“C:\Python34\lib\site packages\PyPDF2\merge.py”,第203行,在append中
self.merge(len(self.pages)、fileobj、书签、页面、导入书签)
文件“C:\Python34\lib\site packages\PyPDF2\merge.py”,第133行,在merge中
pdfr=PdfFileReader(fileobj,strict=self.strict)
文件“C:\Python34\lib\site packages\PyPDF2\pdf.py”,第1065行,在_init中__
self.read(流)
文件“C:\Python34\lib\site packages\PyPDF2\pdf.py”,第1660行,已读
stream.seek(-1,2)
AttributeError:“bytes”对象没有属性“seek”

img2pdf.convert
返回相应pdf文件的字节(作为字符串?),而不是文件处理程序。如果阅读
帮助(merge.append)
,您将看到需要传递文件处理程序或PDF文件的路径。这里有一个可能的解决办法。也可能不生成所有的中间PDF文件

import img2pdf
import os
from PyPDF2 import PdfFileReader, PdfFileMerger, PdfFileWriter
merger = PdfFileMerger()
path = "/tmp/images"

for root,dir,files in os.walk(path):
        for eachfile in files:
            if "pdf" not in eachfile:
                os.chdir(root)
                pdfbytes = img2pdf.convert((eachfile,), dpi=None, x=None, y=None)
                pdfname = eachfile.split('.')[0]+".pdf"
                f = open(pdfname, 'wb+')
                f.write(pdfbytes)
                merger.append(fileobj=f)
                f.close()

f = open("out.pdf", "wb")
merger.write(f)
f.close()

顺便说一下,使用常规工具(如,)也会简单得多。

您会遇到什么错误?这与找不到要打开的文件有关吗?您应该使用文件的完整路径,否则在目录中找不到文件。能否显示错误消息。您好,谢谢您的回复。我已经添加了错误信息,来自图像的PDF没有保存在任何地方。也许这就是合并的问题所在?它与f.close()一起在一个已删除的循环中工作。我知道我可以使用这个工具,但写我自己的更有趣:)顺便问一下,如何删除合并后的每个PDF文件,只保留合并后的一个?
import img2pdf
import os
from PyPDF2 import PdfFileReader, PdfFileMerger, PdfFileWriter
merger = PdfFileMerger()
path = "/tmp/images"

for root,dir,files in os.walk(path):
        for eachfile in files:
            if "pdf" not in eachfile:
                os.chdir(root)
                pdfbytes = img2pdf.convert((eachfile,), dpi=None, x=None, y=None)
                pdfname = eachfile.split('.')[0]+".pdf"
                f = open(pdfname, 'wb+')
                f.write(pdfbytes)
                merger.append(fileobj=f)
                f.close()

f = open("out.pdf", "wb")
merger.write(f)
f.close()