Seite 1 von 1

ConfigParser - Werte verrechnen

Verfasst: Sonntag 4. August 2019, 22:48
von MBler_auf_exkursion
Guten Abend zusammen,


muss als Projekt in meinem Studium (Maschbau) ein kleines Programm schreiben. Durch die Verwendung des Configparser habe ich bisher einen Code geschrieben welcher, die aktuelle Uhrzeiten nach dem Prinzip einer Stempeluhr in eine .ini Datei abspeichert. Das Aus-/Einstempeln und schreiben der INI sowie das ausgeben in der Konsole funktionieren einwandfrei. Als nächstes würde ich gerne die in den einzelnen Sections der INI geschriebenen Stempelzeiten erneut auslesen und diesmal zusätzlich verrechnen. Es soll also die Differenz zwischen Ein- und Ausstempelzeit errechnet werden. Habe da bisher auch noch nichts im Internet gefunden. Hoffe hier finde Ich Hilfe.

Mit freundlichen Grüßen

Tim

Re: ConfigParser - Werte verrechnen

Verfasst: Montag 5. August 2019, 08:47
von Sirius3

Code: Alles auswählen

differenz = ausstempelzeit - einstempelzeit
Wenn die Objekte Datetime-Instanzen sind, ist das alles, was Du brauchst.

Beim Speichern von Zeiten würde ich spontan an Datenbanken, CSV-Dateien, JSON denken, nicht gerade an INI. Was willst Du eigentlich erreichen? Was hast Du schon? Zeige den Code, an dem Du nicht weiter kommst, damit wir einschätzen können, was Dir fehlt, sonst ist es echt schwierig zu helfen.

Re: ConfigParser - Werte verrechnen

Verfasst: Montag 5. August 2019, 08:52
von __deets__
Sind die INI-Files eine Vorgabe? Oder hast du dir das ausgesucht? Denn Format-bedingt sind die eher nicht geeignet zur Darstellung von Zeitreihen. Da würde man eher CSV für nehmen. Oder gleich das in Python schon eingebaute sqlite. Wenn du darfst, solltest du das also ändern. Denn das macht dein hier präsentiertes Problem deutlich einfacher.

Und in jedem Fall musst du uns zeigen, was GENAU du tust, denn nur so kann man Tipps geben, wie du vorgehen kannst. Denn allgemein ist eine Differenz ja nun lediglich a-b. Ohne das drum rum kann man da mehr nicht sagen.

Re: ConfigParser - Werte verrechnen

Verfasst: Montag 5. August 2019, 18:28
von MBler_auf_exkursion
Sirius3 hat geschrieben: Montag 5. August 2019, 08:47

Code: Alles auswählen

differenz = ausstempelzeit - einstempelzeit
Wenn die Objekte Datetime-Instanzen sind, ist das alles, was Du brauchst.
Genau da liegt das Problem. Habe es bisher nicht hinbekommen die Objekte als DateTime-Instanz auszugeben. Ich benutze zwar das DateTime-Modul um die Einstempelzeiten in der Config zu speicher jedoch werden mir diese nach dem ausgeben nicht als DateTime-Instanz sondern als String ausgegeben.


Zum Auslesen und printen der jeweiligen Sektion, bestimmt durch den Input, bin ich bisher folgendermaßen vorgegangen:
e = input ("Datum: ")
config.read("Stempelzeiten_test.ini")
if config.has_section(b+" , "+e):
for key in config [b+" , "+e]:
print (key)
print (config[b+" , "+e][key])

in der Konsole wird das dann folgendermaßen geprinted:
Datum: 05.08.2019
eingestempelt
07:24
ausgestempelt
16:14

Wie gesagt mit dem Format mit dem es geprintet wird bin ich vollkommen zufrieden jedoch fehlt die formatierung fürs rechnen. Glaube ich zumindest :D


Leider ist die Abgabefrist schon am Donnerstag und um jetzt nochmal für den letzten Feinschliff von ConfigParser auf CSV umzusteigen wäre das doch zu viel Aufwand oder?

Vielen dank für eure schnelle Antwort

Tim

Re: ConfigParser - Werte verrechnen

Verfasst: Montag 5. August 2019, 18:46
von __deets__
Kannst du mal bitte zeigen, wie da die INI-Datei aussieht?

Und nein, die Umstellung ist nicht zu spät. Den das Schreiben ist trivial im Verhältnis zum auswerten, und wenn du bei letzterem hakst, ist es angezeigt, das auswerten zum Maßstab zu machen.

Re: ConfigParser - Werte verrechnen

Verfasst: Montag 5. August 2019, 19:34
von MBler_auf_exkursion
__deets__ hat geschrieben: Montag 5. August 2019, 18:46 Kannst du mal bitte zeigen, wie da die INI-Datei aussieht?
Die INI wird folgendermaßen geschrieben: ("timk" steht für den Benutzer für welchen die Stempelzeiten eingetragen wurden.)

[timk , 03.08.2019]
eingestempelt = 07:18
ausgestempelt = 16:21

[timk , 05.08.2019]
eingestempelt = 07:24
ausgestempelt = 16:14



Tim

Re: ConfigParser - Werte verrechnen

Verfasst: Montag 5. August 2019, 19:45
von __deets__
Das ist wirklich komplett falsch. Tut mir leid. Aber ist leider so. Das Config file Format ist dazu gemacht, mit festen Sektionen zu arbeiten. Nicht wie du in genau denen Daten abzulegen. Du benutzt hier gerade nen Hammer, um eine M3 Schraube in ein Maschinengewinde zu ballern.

Schreib eine CSV Datei. Mit 3 Spalten. Zeitpunkt. Vorgang. Name. Alternativ SQLite mit einer Tabelle mit den 3 Spalten.

Das war’s. Garantiert weniger Code als du jetzt hast. Und leichter zu verarbeiten.

Re: ConfigParser - Werte verrechnen

Verfasst: Montag 5. August 2019, 20:02
von MBler_auf_exkursion
Okay dann werd ichs mal mit ner CSV probieren. Danke für die Tipps und den Vergleich mit der M3 Schraube :lol: :lol: das hat mir die ganze Sache viel Verständlicher gemacht.


Tim