[PYTHON] Weisen Sie dem Namen der zerlegten PDF-Datei für jede Seite ein Datum zu

An erster Stelle

Fortsetzung der Demontage der PDF-Datei für jede Seite (https://qiita.com/nabe3ch/items/e1638544546ab1f4b18f).

Ein Kollege, der von seinem Chef gebeten wurde, die täglichen statistischen PDF-Daten (die einmal im Monat veröffentlicht werden) in tägliche (zwei Seiten in einem Satz) zu unterteilen, öffnet das PDF in Chrome. Es tat mir leid, dass ich alle 2 Seiten (Datum) gespeichert habe, also habe ich in Python ein Programm erstellt, das es in beliebige Seiten unterteilt, und bin in der durch die Automatisierung geschaffenen Freizeit zum Mittagessen gegangen.

Zu diesem Zeitpunkt wurde ich gefragt: "Kann ich die Datei als Datum benennen?" Es tut mir leid, dass ich keine Lust dazu hatte. "Ist es nicht in Ordnung, wenn ich überhaupt aufhöre zu spalten?", Aber "Ich habe das bisher getan, also kann ich es nicht mehr ändern ...". Ich frage mich, ob ein Programm erforderlich ist, um das Unternehmen aus der wachsenden Nische zu befreien, aber ich werde ein Memorandum hinterlassen.

Ich habe es in so etwas geändert

Angenommen, es gibt eine Datei mit dem Namen "test.pdf", die Daten vom 2020/01/01 bis zum 2020/02/29 enthält. Da 2 Seiten pro Tag ein Satz sind, frage ich mich, ob es insgesamt 120 Seiten sein werden. Teilen Sie es in zwei Seiten auf und speichern Sie es gemäß dem Format des Speichernamens des Kollegen, z. B. "01. Januar 2020.pdf", "02. Januar 2020.pdf".

pdf_separate.py


import PyPDF2
from datetime import datetime
from datetime import timedelta

f = 'test.pdf' #PDF-Datei, die Sie zerlegen möchten
page_sep = 2 #Wie viele Seiten müssen zerlegt werden?
start_day = '2020/01/01' #Datum der ersten Daten

#Die Anzahl der PDF-Seiten verstehen
reader = PyPDF2.PdfFileReader(f)
page_num = reader.getNumPages()

#Konvertieren Sie das erste Datum für Datum / Uhrzeit
start_datetime = datetime.strptime(start_day, '%Y/%m/%d')

#Setzen Sie die Anzahl der Prozesse auf Null
count = 0

#Gesamtzahl der Seiten von der Seite "0 (1. Seite" ""_"Seite" bis kurz vor "num"_Ableitung von Zahlen mit "sep" (in 2 Schritten) und Drehen mit for
for page in range(0, page_num, page_sep):
    merger = PyPDF2.PdfFileMerger()
    #Wo ist der Anfang der Seite auszuschneiden?
    start = page
    #Wo soll das Ende der Seite ausgeschnitten werden?
    end = start + page_sep
    #das Eis brechen
    merger.append(f, pages=(start,end))

    #Anfangsdatum+Verarbeitungszeit=Geben Sie den Prozess zum Erstellen eines Dateinamens ein
    file_date = start_datetime + timedelta(days=count)
    #Stellen Sie das Datumsformat auf "01. Januar 2020" ein.
    file_date_format = file_date.strftime('%Y{0}%m{1}%d{2}').format(*'Datum')
    #Bestätigen Sie den Dateinamen
    file_name = file_date_format + '.pdf'
    merger.write(file_name)
    merger.close
    #Zählt die Anzahl der Prozesse um 1.
    count += 1

print ('Lass uns heute Abend trinken gehen')

Abgesehen davon, dass der Komet (+ =) auf die Sonne zusteuert (Osten, links von Norden gesehen) und manchmal vergisst, dass er am Anfang "+ =" oder "= +" war. Der erstellte Ordner (der obere wird weggelassen) sieht folgendermaßen aus. pdf_sep.png

Die monatliche Änderung von 1/31 auf 2/1 wurde ebenfalls ordnungsgemäß umgerechnet. Es ist ein gutes Jahr, dieses Jahr eine Olympiade zu haben. Die Datei "29. Februar 2020" wurde ebenfalls ordnungsgemäß erstellt. Jetzt kann ich heute Abend mit meinen Kollegen trinken gehen.

benutze datetime

"Datetime" wird für die Datumsverarbeitung verwendet. Es ist eine Standard-Python-Bibliothek, daher müssen Sie sie nicht installieren. Es ist eine übermäßig vertraute Bibliothek, aber ich erinnere mich, als ich anfing, Python zu verwenden, und ich werde sie so schreiben, dass sie für diejenigen, die neu darin sind, leicht verständlich ist.

Lassen Sie uns zunächst herausfinden, welcher Wert zurückgegeben wird. Zum Beispiel, um das aktuelle Datum zu erhalten

from datetime import datetime

now_date = datetime.now()
print (now_date)
#2020-02-01 11:09:38.124982

Ich fühle mich so. Wenn Sie das Datumsformat des von Ihrem Kollegen gespeicherten Dateinamens verwenden möchten (Beispiel: 01. Februar 2020), gibt es verschiedene Methoden, und Sie haben möglicherweise unterschiedliche Einstellungen, übergeben das Datum jedoch an ".strftime" und Ich definiere es gerne als ".format".


from datetime import datetime

now_date = datetime.now()
format_now_date = now_date.strftime('%Y{0}%m{1}%d{2}').format(*'Datum')

print(format_now_date)
#02. Februar 2020

Wenn Sie darauf basierend "2020/02/01" oder "2020-02-01" erstellen möchten,

format_now_date = now_date.strftime('%Y{0}%m{1}%d').format(*'//')
format_now_date = now_date.strftime('%Y{0}%m{1}%d').format(*'--')

Und. Vergessen Sie nicht, "{2}" in "% d {2}" zu löschen.

Addiere oder subtrahiere

Das erste Nischenprogramm ist ein Mechanismus zum Generieren eines Dateinamens durch Hinzufügen der Anzahl der Prozesse (Anzahl) zum angegebenen Startdatum (Starttag). Mit anderen Worten, das Datum, das der ersten abgeschnittenen Datei zugewiesen ist, ist "2020/01/01 + 0" (01. Januar 2020) und das nächste "2020/01/01 + 1" (02. Januar 2020). Guai.

Die Programmierung ist nicht auf Python beschränkt, sondern kann mit grundlegenden Wörtern und Mechanismen verwaltet werden. Beim Addieren oder Subtrahieren vom Referenzdatum wird jedoch das Objekt "timedelta" verwendet. Vielen Dank, dass Sie die monatliche Veränderung und das Jahr der Schwellung berücksichtigt haben. Zum Beispiel einen Tag nach dem Basisdatum "start_date",

file_date = start_date + timedelta(days= 1)

Und. Ersetzen Sie vor einem Tag "1" durch "-1". Stellen Sie nach einer Woche "Wochen = 1" ein. Das bedeutet, dass mich ein Jahr später "Jahre = 1" und einen Monat später "Monate = 1" an die süßen und sauren Erinnerungen erinnert, die ich hatte, als ich anfing, Python zu berühren. Nicht so einfach, bis zu 7 Typen.

Beispiel Bedeutung
weeks=10 10 Wochen später
days=10 10 Tage später
hours=10 10 Stunden später
minutes=10 10 Minuten später
seconds=10 10 Sekunden später
milliseconds=10 10 Millisekunden
microseconds=10 Nach 10 Mikrosekunden

Ich mache nicht die heikle Arbeit, Millisekunden oder Mikrosekunden zu verwenden, deshalb möchte ich, dass Sie Jahre und Monate vorbereiten.

Ich dachte, dass die Anzahl umständlich sein sollte, und ich sollte ein mehrdimensionales Array generieren, das die Startseite zum Ausschneiden der Datei und des Datums festlegt. Es ist ein Ärger, und ich möchte das Programm später verbessern, aber wenn eine Person erscheint, die Python noch nicht kennt, ist dies meiner Meinung nach leichter zu lesen. Solch eine seltsame Person wird nicht erscheinen.

Recommended Posts

Weisen Sie dem Namen der zerlegten PDF-Datei für jede Seite ein Datum zu
Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung
Ermitteln Sie die Anzahl der Vorkommen für jedes Element in der Liste
Überprüfen Sie die Zunahme / Abnahme der Bitmünzen für jede Adresse aus der Blockchain
Python Hinweis: Map - Machen Sie dasselbe für jedes Element der Liste
Ich habe versucht, die Abstimmungsergebnisse der Metropolregion Osaka für jede Gemeinde zu analysieren
Mit ReportingAPI + Cloud-Funktionen können Sie die Anzahl der Besuche auf jeder Seite ermitteln
Die dritte Nacht der Runde mit für
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Die zweite Nacht der Runde mit für
Legen Sie den Prozessnamen des Python-Programms fest
[IOS] Ändern Sie die Anzeigezeit für jedes Bild der GIF-Animation in Pythonista3.
[Bash] Übergibt den Inhalt der Datei beim Lesen an Variablen für jede Spalte
[Python] Ich habe versucht, den Funktionsnamen durch den Funktionsnamen zu ersetzen
Die Geschichte, dass die Lernkosten von Python niedrig sind
Passen Sie die Verteilung jeder Gruppe in Python an
Überprüfen Sie das Datum der Flaggenpflicht mit Python
Bildverarbeitung? Die Geschichte, Python für zu starten
Schreiben Sie den Namen des Tags mit dem Namespace in lxml neu
[Python] Ruft das Datum der letzten Aktualisierung der Website ab
Code zum Überprüfen des Betriebs von Python Matplot lib
Rufen Sie das Aktualisierungsdatum der Python-Memorandum-Datei ab.
Geben Sie für jede Datei die angegebene Tabelle der Oracle-Datenbank in Python in Excel aus
Überprüfen Sie die Verarbeitungszeit und die Anzahl der Aufrufe für jeden Prozess mit Python (cProfile).
Speichern Sie die Ausgabe der bedingten GAN für jede Klasse ~ Mit der cGAN-Implementierung von PyTorch ~