Data Processing

Keine Batterie hält ewig - nun möchten wir wissen, wie lange unsere Batterie Strom liefert, und wieviel Energie wir praktisch nutzen konnten, bis sie leer ist. Aus der Physik wissen wir, dass $Spannung\cdot{}Strom$ die Leistung unserer Batterie (bzw. die Leistungsaufnahme der Leuchte) ergibt. Wenn wir die Leistung über die ganze Lebensdauer unseres Systems aufzeichnen, wissen wir, wieviel Arbeit die Batterie insgesamt geleistet hat.

TODO je nach verwendeter Sensortechnik unterscheidet sich dieser Block.
TODO: wollen wir wirklich Spannung & Strom messen, oder nur $U$, da $R$ bekannt ist?

Schreibe Python-Code wie folgt. Falls die nötigen Python-Kenntnisse noch nicht vorhanden sind, folgst du den untenstehenden Tutorials.

  • Datei batterie.csv im Schreibmodus öffnen.
  • Eine Schleife ausführen, die alle zehn Sekunden die Strom- und Spannungswerte ausliest.
  • Für jede Lesung wird eine Zeile (en. record) in die Datei geschrieben im folgenden Format:

    <timestamp>, <spannung>, <strom>

  • also zum Beispiel (für eine Messung von $U = 1.37V$ und $I = 300mA$):

    2024-06-13 14:08:37.375, 1.37, 0.3

Python: Datei Ein- und Ausgabe

Wie lesen wir Daten in einer Text-Datei?

# Opens a file for writing (and closes it again after the 'with').
with open('dateiname.csv', 'w') as outfile:
    for i in range(10):
        line = 'Zeile ' + str(i) + '\n'
        outfile.write(line)

Beachte:

  • Wenn Dateien gelesen oder geschrieben werden, müssen sie beim Betriebssystem reserviert werden. Mit with wird sichergestellt, dass die Datei nicht offen bleibt sondern nach dem Lesevorgang wieder geschlossen wird.
  • Die Datei (hier 'dateiname.csv') muss sich im gleichen Ordner befinden wie die Python-Datei.
  • 'w' bedeutet write, dass die Textdatei nur gelesen und nicht verändert wird.
  • str() verwandelt die Zahl in einen Text.
  • '\n' ist der ASCII-Code für einen Zeilenumbruch.
Aufgabe

Beschreibe eine Datei mit einigen Zeilen. Es ist ungünstig, mehr als einige zehntausend Zeilen zu schreiben…

Python: Zeitstempel formatieren

Zeitstempel können aus der datetime Bibliothek geholt werden:

from datetime import datetime
 
print(datetime.now())

Mit Python f-Strings können mehrere Argumente praktisch in einen String gepackt werden:

from datetime import datetime
timestamp = datetime.now()
planet = 'Alderaan'
magnitude = 'great'
print(f'At {timestamp}, there was a {magnitude} disturbance in the Force on planet {planet}!')

(Du weisst nicht, von was einem Alderaan hier die Rede ist? → Star Wars schauen bis zur nächsten Lektion.

  • phtg/bp/ch3.1715625754.txt.gz
  • Zuletzt geändert: 2024-05-13 18:42
  • von hof