Seite 1 von 1

Listen auf Datei schreiben

Verfasst: Mittwoch 8. Mai 2019, 19:43
von LeonTUK
Hallo,
Ich habe ein kleines Problem und zwar : ich soll einen Lagesensor programmieren und die Messdaten auf eine Datei schreiben. Soweit so gut ich habe den Sensor in Betrieb genommen und auch meinen Code soweit, dass er eine Datei erstellt etc.
Nun meine Frage : mit file.write() schreib ich normal meine Sachen in die Datei. Allerdings muss ich sie davor zu einem String formatieren. Ist es Laufzeit technisch egal ob ich das mache? Und wenn ich die Datei weiter verarbeiten will muss ich jedes Element aus den Listen wieder zurück konvertieren oder? Gibt es zum Schreiben von Listen in eine Datei eine Möglichkeit, die Floats die darin stehen in ihrem Typ zu lassen?
Danke schonmal im Voraus für die Hilfe

Re: Listen auf Datei schreiben

Verfasst: Mittwoch 8. Mai 2019, 20:05
von Sirius3
In Textdateien kannst Du nur Text schreiben. Und den mußt Du natürlich auch wieder zurückkonvertieren. Das ist der normale Weg.
Um Daten mit Typ in Dateien zu schreiben, gibt es Protokolle, z.B. JSON.

Re: Listen auf Datei schreiben

Verfasst: Montag 13. Mai 2019, 07:42
von heiner88
Ohne JSON ist es ein bisschen umständlicher:

Code: Alles auswählen

#!/usr/bin/python3

# write data
with open("daten.txt", "w") as f:
    f.write("%f %f %f" % (1.00, 2.00, 3.00))

# read data
with open("daten.txt", "r") as f:
    data = f.read()

x, y, z = data.split(" ")
x = float(x)
y = float(y)
z = float(z)
print(x, y, z)

Re: Listen auf Datei schreiben

Verfasst: Montag 13. Mai 2019, 08:42
von Sirius3
@heiner88: wobei Du damit nicht den Typ mit in der Datei speicherst, sondern wissen muß, dass es sich um Zahlen handel.
Beim Schreiben und Lesen von Text-Dateien immer ein encoding angeben, die default-Werte sind in Python3 leider systemabhängig.
Mit `map` vereinfacht sich das noch:

Code: Alles auswählen

with open("daten.txt", encoding="ASCII") as f:
    x, y, z = map(float, f.read().split())