【问题标题】:Merging PDFs based on a value in the file name根据文件名中的值合并 PDF
【发布时间】:2021-02-11 01:24:29
【问题描述】:

我有一个包含数百个 pdf 的文件夹,我需要根据名称中的唯一 ID 将它们制作成一个 PDF。

pdf 的名称采用这种格式“_UniqueID_Series.pdf” 示例:

  • _9424_01.pdf
  • _9424_02.pdf
  • _9424_03.pdf
  • _9425_01.pdf
  • _9425_02.pdf
  • _9426_01.pdf

我需要根据唯一 ID 命名输出并包括该系列中的所有内容(按顺序),因此我在此示例中的输出将包含 3 个 pdf:9424.pdf(3 页)9425.pdf(2 页)9426 .pdf(1 页)

我可以使用 PyPDF2 将文件夹中的所有 pdf 附加到一个文件夹中。但是我对python太陌生了,无法弄清楚如何根据唯一ID对它们进行分组。这可以在python中做到吗?提前致谢。

【问题讨论】:

    标签: python pdf pypdf2


    【解决方案1】:

    有很多方法可以解决这个问题,这就是我要解决的方法。

    如果您根据文件名称的降序提取文件,那么您将在上面给出的系列中获得它们的名称。这将产生一个列表,然后您可以使用它来遍历文件名。看到这个 - Open file knowing only a part of its name

    以下只是简单地遍历文件,例如

    Files = [_9424_01.pdf,_9424_02.pdf] #example list. You will obtain in this form  from the above step.
    prev = " "# to check what the prev file name was
    for file in Files: 
       if file == prev or prev == " ": #the latter is True in the first instance
          #use PyPDF2  to create the pdfs for that id
       else:   
          #Differnt file name, so create a new pdf for this.
       prev = file   
    

    要从_9424_01.pdf 中提取文件的中间编号,例如9424,请使用regexsplit() 方法,例如

    file = "_9424_01.pdf"
    UniqID = file.split("_")[1]
    print(UniqID) #Gives 9424
    

    【讨论】:

    • 感谢您的反馈。你在这里给了我很多很好的信息。处理完这件事后,我会回复你。
    • @Bobarmntrt 很高兴听到。如果此答案对您的问题有所帮助,请单击答案旁边的复选标记将其标记为已接受。请参阅here 了解更多信息。如果您有任何问题,请随时询问
    • 我觉得你给了我我需要的一切,但我对 pyton 太菜鸟了,无法将它们放在一起。我已经使用 files = glob.glob(*.pdf) 从所有 pdf 中加载了一个列表,但我坚持让 Iteration 和 PyPDF2 append 工作。
    • 我明白了。如果您可以将新问题附加到问题中,或者如果您觉得它过于宽泛,或者是一个新主题,请将其作为一个新问题提出
    • 还没有,还在努力弄明白。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    相关资源
    最近更新 更多