簡體   English   中英

從csv讀取pdf文件名並合並pdf

[英]Reading pdf file names from a csv and merge pdfs

我改組了一個csv文件,其中包含引用pdf文件的文件名:

list1 = list(csv.reader(open('input.csv')))

random.shuffle(list1)
outputwriter = csv.writer(open("random.csv", "wb"))
outputwriter.writerows(list1)

如您所見,我還將結果寫入了一個新的csv文件中,但我認為這不是必需的。 在任何情況下,隨機混排的列表看起來都像這樣:

R001.pdf
L008.pdf
L009.pdf
L011.pdf
R006.pdf
L014.pdf
L016.pdf
R019.pdf
R021.pdf
R005.pdf
R007.pdf
L010.pdf
R004.pdf
L015.pdf
L018.pdf
L003.pdf
L012.pdf
L002.pdf
L017.pdf
L020.pdf
R013.pdf

我現在想做的是使用PyPDF2以隨機的順序合並這些pdf。

from PyPDF2 import PdfFileMerger
merger = PdfFileMerger()
for x in list1:
    merger.append(x)

merger.write("result.pdf")

但是,這會產生以下錯誤:

AttributeError: 'list' object has no attribute 'seek'

有人知道我在做什么錯嗎? 我還嘗試從新的random.csv中讀取列表,如下所示:

merger = PdfFileMerger()
with open("random.csv") as f:
    r = csv.reader(f)
for x in r:
    merger.append(x)

但是,這也會導致錯誤:

ValueError: I/O operation on closed file

我將非常高興學習如何做到這一點! :)

list(csv.reader(fileobj))返回列表列表。

文檔PdfFileMerger.append()帶有文件對象參數,您正在傳遞它的列表。 嘗試:

from PyPDF2 import PdfFileMerger
merger = PdfFileMerger()
for x in list1:
    with open(x[0]) as f:
        merger.append(f)

merger.write("result.pdf")

您正在打開文件,而不是關閉它們。 每當您使用不帶.close() .open() ,都有可能發生錯誤。

與上一個示例一樣,始終首選使用上下文管理器。

with open('filename.ext', mode='somemodeR\\W')因為它會自動關閉它,您不必擔心每次打開文件時都會手動關閉它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM