Python错误从递归目录生成PDF

时间:2017-02-21 12:10:10

标签: python-3.x

我是python的新手,我正在尝试从书本和互联网上学习。

我有大约250个带有jpg的子文件夹,我正在尝试为每个文件夹制作一个pdf文件。

文件夹就像这样

c:\img_sets\001
c:\img_sets\002
.
.
c:\img_sets\247

我想像这样的PDF

c:\img_sets\001.pdf
c:\img_sets\002.pdf
.
.
c:\img_sets\247.pdf

我从c:\ img_sets(windows 10和python 3.6)

运行脚本

这是“代码”,只是在文件列表中添加了两个打印件,仅用于控制。

from fpdf import FPDF
import os
pdf = FPDF()
rootDir = '.'
for root, dirs, files in os.walk(rootDir):
    for namedir in dirs:
        imagelist = [name for name in os.listdir(namedir) if name.endswith(".jpg")]
        for image in imagelist:
            print(namedir + "\\" + image)
            pdf.add_page()
            pdf.image(namedir + "\\" + image,0,0,210,297)
        print(namedir + ".pdf")
        pdf.output(namedir + ".pdf", "F")

这创建了第一个,但第二个显示了这个错误:

Traceback (most recent call last):
  File "c:\Python\Python36-32\jpg2pdf_v2.py", line 13, in <module>
pdf.output(namedir + ".pdf", "F")
  File "C:\Python\Python36-32\lib\site-packages\fpdf\fpdf.py", line 1065, in output
    self.close()
  File "C:\Python\Python36-32\lib\site-packages\fpdf\fpdf.py", line 246, in close
    self._enddoc()
  File "C:\Python\Python36-32\lib\site-packages\fpdf\fpdf.py", line 1637, in _enddoc
    self._putresources()
  File "C:\Python\Python36-32\lib\site-packages\fpdf\fpdf.py", line 1585, in _putresources
    self._putimages()
  File "C:\Python\Python36-32\lib\site-packages\fpdf\fpdf.py", line 1515, in _putimages
    del info['data']
KeyError: 'data'

所有帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

发现错误。 pdf = FPDF()错误是外循环。

import fpdf
import os
rootDir = '.'
for root, dirs, files in os.walk(rootDir):
    for dir in dirs:
        print(os.path.join(root, dir))
        imagelist = [name for name in os.listdir(os.path.join(root, dir)) if name.endswith(".jpg")]
        print(imagelist)
        pdf = fpdf.FPDF()
        for image in imagelist:
            pdf.add_page()
            pdf.image(rootDir + dir + "\\" + image, 0, 0, 210, 297)
        pdf.output(rootDir + dir + ".pdf", "F")