Poursuite du démontage du fichier PDF pour chaque page (https://qiita.com/nabe3ch/items/e1638544546ab1f4b18f).
Un collègue à qui son patron a demandé de diviser les données statistiques quotidiennes PDF (qui sortent une fois par mois) en quotidiens (deux pages dans un ensemble) ouvre le PDF dans Chrome. J'étais désolé d'avoir sauvé toutes les 2 pages (date), j'ai donc créé un programme en Python qui le divise en pages arbitraires, et suis allé déjeuner dans le temps libre créé par l'automatisation.
À ce moment-là, on m'a demandé: «Puis-je nommer le fichier comme une date?» Je suis désolé de ne pas avoir envie. "N'est-ce pas bien si j'arrête de me séparer en premier lieu?", Mais "je l'ai fait jusqu'à présent, donc je ne peux plus le changer ...". Je me demande s'il y a une demande pour un programme pour libérer l'entreprise du créneau en croissance, mais je vais laisser un mémorandum.
Supposons qu'il existe un fichier appelé "test.pdf" contenant des données du 01/01/2020 au 29/02/2020. Puisque 2 pages par jour sont un ensemble, je me demande si ce sera 120 pages au total. Décomposez-le en deux pages et enregistrez-le selon le format de sauvegarde du collègue tel que «01 janvier 2020.pdf», «02 janvier 2020.pdf».
pdf_separate.py
import PyPDF2
from datetime import datetime
from datetime import timedelta
f = 'test.pdf' #Fichier PDF que vous souhaitez démonter
page_sep = 2 #Combien de pages à démonter
start_day = '2020/01/01' #Date des premières données
#Comprendre le nombre de pages PDF
reader = PyPDF2.PdfFileReader(f)
page_num = reader.getNumPages()
#Convertir la première date pour datetime
start_datetime = datetime.strptime(start_day, '%Y/%m/%d')
#Définissez le nombre de processus sur zéro
count = 0
#Nombre total de pages de la page "0 (1ère page" "_"Page" juste avant "num"_Dérivation des nombres avec "sep" (en 2 incréments) et tournant avec pour
for page in range(0, page_num, page_sep):
merger = PyPDF2.PdfFileMerger()
#Où est le début de la page à découper?
start = page
#Où est la fin de la page à découper?
end = start + page_sep
#briser la glace
merger.append(f, pages=(start,end))
#date de début+temps de traitement=Entrez le processus de création d'un nom de fichier
file_date = start_datetime + timedelta(days=count)
#Définissez le format de la date sur "01 janvier 2020"
file_date_format = file_date.strftime('%Y{0}%m{1}%d{2}').format(*'Date')
#Confirmer le nom du fichier
file_name = file_date_format + '.pdf'
merger.write(file_name)
merger.close
#Compte le nombre de processus par 1.
count += 1
print ('Allons boire ce soir')
En plus de se rappeler que la comète (+ =) se dirige vers le soleil (est, à gauche vue du nord), oubliant parfois qu'elle était "+ =" ou "= +" au début. Le dossier créé (celui du haut est omis) ressemble à ceci.
La variation mensuelle de 1/31 à 2/1 a également été convertie correctement. C'est une bonne année pour avoir des Jeux olympiques cette année. Le fichier "29 février 2020" a également été créé correctement. Maintenant, je peux aller boire avec mes collègues ce soir.
"Datetime" est utilisé pour le traitement de la date. C'est une bibliothèque Python standard, donc vous n'avez pas besoin de l'installer. C'est une bibliothèque trop familière, mais je me souviens quand j'ai commencé à utiliser Python, et je vais l'écrire pour qu'elle soit facile à comprendre pour ceux qui sont novices.
Tout d'abord, voyons quelle valeur est retournée. Par exemple, pour obtenir la date actuelle
from datetime import datetime
now_date = datetime.now()
print (now_date)
#2020-02-01 11:09:38.124982
Se sentir comme ça. Si vous souhaitez utiliser le format de date du nom de fichier enregistré par votre collègue (exemple: 01 février 2020), il existe différentes méthodes et vous pouvez avoir des préférences différentes, mais passez la date à ".strftime" et J'aime le définir comme ".format".
from datetime import datetime
now_date = datetime.now()
format_now_date = now_date.strftime('%Y{0}%m{1}%d{2}').format(*'Date')
print(format_now_date)
#02 février 2020
Si vous souhaitez créer "2020/02/01" ou "2020-02-01" sur cette base,
format_now_date = now_date.strftime('%Y{0}%m{1}%d').format(*'//')
format_now_date = now_date.strftime('%Y{0}%m{1}%d').format(*'--')
Et. N'oubliez pas de supprimer le "{2}" dans "% d {2}".
Le premier programme de niche est un mécanisme pour générer un nom de fichier en ajoutant le nombre de processus (count) à la date de début spécifiée (start_day). En d'autres termes, la date attribuée au premier fichier découpé est "01/01/2020 + 0", qui est le 1er janvier 2020, et la suivante est "01/01/2020 + 1", qui est le 2 janvier 2020. Guai.
Non limité à Python, la programmation peut être gérée avec des mots et des mécanismes de base, mais lors de l'ajout ou de la soustraction de la date de référence, l'objet "timedelta" est utilisé. Merci de considérer le changement mensuel et l'année du gonflement. Par exemple, un jour après la date de base "start_date",
file_date = start_date + timedelta(days= 1)
Et. Il y a un jour, remplacez "1" par "-1". Après une semaine, définissez "semaines = 1". Cela signifie "années = 1" un an plus tard et "mois = 1" un mois plus tard, ce qui me rappelle les souvenirs aigres-doux que j'avais lorsque j'ai commencé à toucher Python. Pas si simple, jusqu'à 7 types.
Exemple | sens |
---|---|
weeks=10 | 10 semaines plus tard |
days=10 | 10 jours plus tard |
hours=10 | 10 heures plus tard |
minutes=10 | 10 minutes plus tard |
seconds=10 | 10 secondes plus tard |
milliseconds=10 | 10 millisecondes |
microseconds=10 | Après 10 microsecondes |
Je ne fais pas le travail délicat d'utiliser des millisecondes ou des microsecondes, alors j'aimerais que vous prépariez des années et des mois.
Je pensais que le décompte devait être gênant et que je devrais générer un tableau multidimensionnel qui définit la page de démarrage pour couper le fichier et la date. C'est un problème, et je veux améliorer le programme plus tard, mais quand une personne qui est nouvelle avec Python apparaît, je pense que c'est plus facile à lire. Une personne aussi étrange n'apparaîtra pas.
Recommended Posts