Я перетасовал 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
Что я хотел сделать сейчас, так это объединить эти PDF-файлы в случайном порядке, используя PyPDF2.
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
Я был бы очень рад научиться делать это! :)
with open..
для автоматического закрытия файла, когда он покидает блок. Вот почему он жалуется, что файл уже закрыт. - person Jongware   schedule 28.04.2018