2017-02-21 41 views
0

我是python的新手,我試圖從書本和互聯網上學習。從遞歸目錄生成PDF的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(視窗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' 

所有幫助將不勝感激。

回答

0

找到了該錯誤。 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")