#python #pypdf2 #startswith #pdfmerger
#python #pypdf2 #запускается с #pdfmerger
Вопрос:
здесь я первый программист. Я пытаюсь создать программу, которая поможет автоматизировать часть моей работы в офисе с использованием python.
то, что я пытаюсь сделать, это объединить PDF-файл из папки 1 с другим PDF-файлом из папки 2 с тем же именем. Я также хотел бы использовать графический интерфейс Tkinter
это то, что я получаю до сих пор
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()
Теперь есть третий файл, который я должен добавить, но третий файл, который я должен добавить, имеет дату в имени файла. например: файл 1 (010.pdf); файл 2 (010.pdf); файл 3 (010_2020_10_05).
В папке примерно 9000 файлов, как я должен это делать?
Комментарии:
1. Немного непонятно, о чем вы спрашиваете. Проблема связана с количеством файлов или именами файлов? Является ли tkinter частью конкретной проблемы, с которой вам нужна помощь?
2. Мне очень жаль, английский не является моим основным языком. tkinter не имеет отношения к проблеме. Речь идет об имени файла. Я должен объединить файл из папки 1-3, файл в папках 1 и 2 имеет одно и то же имя, а в папке 3 у него есть метаданные в конце его имени файла.
3. Никаких забот вообще. С грамматикой все в порядке! Я просто не был уверен, о каком бите вы спрашивали.
Ответ №1:
Я думаю, что вам нужен способ просто найти файлы с префиксом определенной строки. Основываясь на суффиксе даты, я предполагаю, что имена файлов могут быть не уникальными, поэтому я пишу это, чтобы найти все совпадения. Что-то вроде этого сделает это:
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)]
Если вы только учитесь писать код, этот пример относительно прост. Однако это неэффективно, если вам нужно сопоставить 9000 файлов одновременно. Чтобы ускорить его выполнение, вам нужно будет загружать список файлов один раз, а не по каждому запросу.
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)
Комментарии:
1. во втором коде я должен указать dir_path = pathlib. Путь (directory_name) или нет?
2. Ах, да, как написано, dir_path должен быть объектом Path