我想根據他們所在的縣來生成pdf文件。如果每個縣有多個pdf文件,那麼我需要根據縣域密鑰將文件附加到單個文件中。我似乎無法獲得基於密鑰追加的地圖。生成的最終地圖看起來是隨機的,往往會附加太多的文件。我很確定我沒有正確分組它們。我已經讀過一個鍵中的多個值可能導致多次顯示。有人可以告訴我如何分別訪問每個鍵的每個值,只有一次?很顯然,我不瞭解某些至關重要的事情。在字典鍵(或csv)中添加基於pdf文件的多字節值會導致頁面太多
我的代碼:
import csv, os
import shutil
from PyPDF2 import PdfFileMerger, PdfFileReader, PdfFileWriter
merged_file = PdfFileMerger()
counties = {'County4': ['C:\\maps\\map2.pdf', 'C:\\maps\\map3.pdf', 'C:\\maps\\map4.pdf'], 'County1': ['C:\\maps\\map1.pdf', 'C:\\maps\\map2.pdf'], 'County3': ['C:\\maps\\map3.pdf'], 'County2': ['C:\\maps\\map1.pdf', 'C:\\maps\\map3.pdf']}
for k, v in counties.items():
newPdfFile = ('C:\maps\JoinedMaps\k +'.pdf')
if len(v) > 1:
for filename in v:
merged_file.append(PdfFileReader(filename,'rb'))
merged_file.write(newPdfFile)
else:
for filename in v:
shutil.copyfile(filename, newPdfFile)
我得到的輸出四張地圖(這是正確的),但在某些文件的「頁面」(附加文件)的數量是大錯特錯了。據我所知,這些頁面如何被追加沒有押韻或理由。 County4 PDF有3頁(正確),County1 PDF具有8頁,而不是2,County3 PDF具有1頁(正確的)和County2具有15頁,而不是2.
編輯:
原來pyPDF2確實不像使用group-by的概念迭代和創建文件。我想它對於存儲內存的方式有些不同。結果是在迭代關鍵值時創建越來越多的頁面。我花了幾天的時間認爲這是我的編碼。很高興知道這不是我猜想的,但我很驚訝這部分信息並非「在互聯網上」更好。
我的解決方案是使用arcpy,它不會幫助大多數用戶閱讀此內容,遺憾地說。
對於那些希望在我的解決方案,我的csv文件是這樣的:
County1 C:\maps\map1.pdf
County1 C:\maps\map2.pdf
County2 C:\maps\map1.pdf
County2 C:\maps\map3.pdf
County3 C:\maps\map3.pdf
County4 C:\maps\map2.pdf
County4 C:\maps\map3.pdf
County4 C:\maps\map4.pdf
和我得到的PDF文件是這樣的:
County-County1 (2 pages - Map1 and Map2)
County-County2 (2 pages - Map1 and Map3)
County-County3 (1 page - Map3)
County-County2 (3 pages - Map2, Map3, and Map4)
我假設:' 'C:\地圖\ JoinedMaps \ K +' pdf''應該是''C:\地圖\ JoinedMaps \ {} '.format(k)+'。pdf'' - 如果是這樣,那麼這是一個簡單的語法錯誤... – coder
不幸的是結果是一樣的。 – NewbieX