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

Python 从csv读取pdf文件名并合并pdf,python,csv,pdf,pypdf2,Python,Csv,Pdf,Pypdf2,我洗牌了一个csv文件,其中包含引用pdf文件的文件名: list1 = list(csv.reader(open('input.csv'))) random.shuffle(list1) outputwriter = csv.writer(open("random.csv", "wb")) outputwriter.writerows(list1) 正如您所看到的,我还将结果写入了一个新的csv文件,但我认为这是不必要的。在任何情况下,随机排列的列表看起来都是这样的,例如: R001.pd

我洗牌了一个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
merger = PdfFileMerger()
with open("random.csv") as f:
    r = csv.reader(f)
for x in r:
    merger.append(x)
我现在想做的是使用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中读取列表,如下所示:

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
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

我真的很高兴知道如何做到这一点!:)

您正在打开文件,而不是关闭它们。无论何时使用
.open()
而不使用
.close()
都可能会出现错误

人们总是倾向于像上一个示例中那样使用上下文管理器

打开('filename.ext',mode='somemodeR\W')
,因为这样会自动关闭文件,您不必担心每次打开时都手动关闭文件。

列表(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")

谢谢你的建议!不幸的是,这也会导致一个错误:
TypeError:强制使用Unicode:需要字符串或缓冲区,找到列表
aaah!“list(csv.reader(fileobj))返回列表列表。”这就是为什么!谢谢你帮我理解这一点!:)Re:最后一个错误是,Python使用带有open..块的
在文件离开块时自动关闭文件。这就是它抱怨文件已经关闭的原因。