簡體   English   中英

Pypdf2合並function並以

[英]Pypdf2 merger function and startswith

第一次在這里編碼。 我正在嘗試使用 python 創建一個程序來幫助自動化我在辦公室的一些工作。

我要做的是將文件夾 1 中的 pdf 文件與文件夾 2 中的另一個同名 pdf 文件合並。 我也想使用 Tkinter gui

這就是我到目前為止所得到的

from tkinter import *
from PyPDF2 import PdfFileMerger

root = Tk()

  
# Creating a Label Widget
MainLabel = Label(root, text="PDF Rawat Jalan")
# Shoving it onto the screen
MainLabel.pack()

#Prompt Kode
KodeLabel = Label(root, text="Masukan Kode")
KodeLabel.pack()

#Input Kode

kode = Entry(root, bg="gray",)
kode.pack()


#function of Merge Button
def mergerclick():
    kode1 = kode.get()
    pdflocation_1 = "C:\\Users\\User\\Desktop\\PDF\\Folder 1\\1_"+kode1+".pdf"
    pdflocation_2 = "C:\\Users\\User\\Desktop\\PDF\\Folder 2\\2_"+kode1+".pdf"
    Output = "C:\\Users\\User\\Desktop\\PDF\\output\\"+kode1+".pdf"
    merger = PdfFileMerger()

    merger.append(pdflocation_1)
    merger.append(pdflocation_2)

    merger.write(open(Output, 'wb'))
    confirmation = kode1 +" merged"
    testlabel = Label(root, text=confirmation)
    testlabel.pack()



#Merge Button
mergerButton = Button(root, text= "Merge", command=mergerclick)
mergerButton.pack()

root.mainloop()

現在有第三個文件我應該是 append,但我應該是 append 的第三個文件的文件名中有日期。 例如:文件1(010.pdf); 文件 2 (010.pdf); 文件 3 (010_2020_10_05)。

每個文件夾大約有 9000 個文件我應該怎么做?

我認為您需要的是一種僅查找以特定字符串為前綴的文件的方法。 根據日期后綴,我猜文件名可能不是唯一的,所以我寫這個來查找所有匹配項。 這樣的事情會做到這一點:

import pathlib

def find_prefix_matches(prefix):
  dir_path = pathlib.Path(directory_name)
  return [str(f_name) for f_name in dir_path.iterdir() 
      if str(f_name).startswith(prefix)]

如果你只是學習寫代碼,這個例子比較簡單。 但是,如果您需要同時匹配 9,000 個文件,則效率不高。 為了讓它運行得更快,您需要加載文件列表一次,而不是每次請求。

import pathlib

def find_prefix_matches(prefix, file_list):
  return [f for f in file_list if f.startswith(prefix)]

file_list = [str(f_name) for f_name in dir_path.iterdir()]
for file_name_prefix in your_list_of_files_to_append:
  file_matches = find_prefix_matches(file_name_prefix, file_list)

暫無
暫無

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

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