从csv读取pdf文件名并合并pdf

2024-07-04 05:50:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我已将一个包含文件名的csv文件混排为pdf文件:

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

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

但我觉得你把csv写进一个新的文件也没必要。在任何情况下,随机排列的列表看起来如下:

^{pr2}$

我现在想做的是使用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'

有人知道我做错了什么吗?我还试着从新的随机.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

我真的很高兴能学会怎么做!:)


Tags: 文件csvinforpdfrandomopenmerger
2条回答

{cd1>返回列表列表。在

The documentationPdfFileMerger.append()接受一个file对象参数,您正在传递它的列表。尝试:

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')因为这会自动关闭它,而且您不必担心每次打开文件时手动关闭它。在

相关问题 更多 >

    热门问题