Hallo zusammen,
ich hab einen Code erstellt, welcher Daten von einer Maschine einliest, und diese als Textdatei wiedergeben soll. Die Daten sind dabei Bewegungen in x, y und z Richtung. Jedoch werden die Daten durch meinen Code ungeordnet ausgeben.Der Code sieht folgendermaßen aus:
import paho.mqtt.client as mqtt
MQTT_Broker = 'technologiekette.wzl.senseering.net'
def on_connect(client, userdata, flags, rc):
print('Connected with result code ' + str(rc))
client.subscribe('verzahnen/hart/#')
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
print('=================================')
print('=================================')
with open('test_ViperData.txt','a+') as f:
f.write(msg.topic + " " + str(msg.payload) + "\n")
client = mqtt.Client()
client.on_message = on_message
client.on_connect = on_connect
client.connect(MQTT_Broker, 1883, 60)
client.loop_forever()
Und die Ausgabe des Codes hat folgende Struktur:
verzahnen/hart/data b'{"yPosAct":182.510311,"zPosAct":138.663987}'
verzahnen/hart/data b'{"yPosAct":182.504959,"zPosAct":138.66684}'
verzahnen/hart/data b'{"yPosAct":182.499586,"zPosAct":138.669706}'
Ich würde gerne eine Textdatei ausgeben bekommen, die alle Werte in Tabellenform in x, y und z Richtung der Reihe nach geordnet ausgibt. Wie kann ich dies am besten realisieren? Viele Dank schon mal im Voraus.
Viele Grüße
Geordnete Textdatei erstellen
Größe gibt es bei Koordinaten nicht wirklich. Ist München größer als Köln? So richtig sinnvoll ist das also nicht, warum glaubst du also das bringt etwas?
Aber wenn’s denn sein muss: wenn du die Daten mit dem JSON Modul einliest, kannst du mit dem keys argument der sorted Funktion dieses Kriterium darstellen.
Aber wenn’s denn sein muss: wenn du die Daten mit dem JSON Modul einliest, kannst du mit dem keys argument der sorted Funktion dieses Kriterium darstellen.
Code: Alles auswählen
sortiert = sorted(daten, key=lambda eintrag: (eintrag["yPosAct"], eintrag["zPosAct"]))
- __blackjack__
- User
- Beiträge: 13160
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@mmk62: "a+" ist hier kein sinnvoller Dateimodus. "+" ist bei Textdateien eigentlich immer falsch. Und man sollte bei Textdateien immer explizit eine Kodierung angeben. Und wenn es nur ASCII ist.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Hallo,
@__blackjack__ was kann denn passieren wenn man „+“ bei Textdateien verwendet?
Wenn ich den Text in der Doku lese, könnte ich mir vorstellen dass da Teile abgeschnitten werden können? Aber vielleicht war das auch etwas zu direkt übersetzt.
Danke und Grüße
Dennis
@__blackjack__ was kann denn passieren wenn man „+“ bei Textdateien verwendet?
Wenn ich den Text in der Doku lese, könnte ich mir vorstellen dass da Teile abgeschnitten werden können? Aber vielleicht war das auch etwas zu direkt übersetzt.
Danke und Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Da 'a+' schreiben nur ans Ende erlaubt, ist das nicht ganz so gefährlich.
Wenn man wahlfreien Zugriff auf Textdateien hat, muß man ja per seek an bestimme Stellen springen, wobei man Zeichen liest und schreibt, die Positionen aber trotzdem in Bytes sind.
Da man nie weiß, wie viele Bytes eine Zeichenkette hat, ist es schwierig, die richtige Position anzusteuern. Wenn man mitten in einer Datei schreibt, dann kann der überschriebene Text entweder zu kurz oder zu lang in Bytes sein, was dann zu kaputtem Inhalt führen kann.
Auch bei Binärdateien wird man in den meisten Fällen entweder lesen oder schreiben wollen. Für exotische Fälle (z.B. Datenbanken) kann es manchmal Sinn machen, sowohl zu schreiben als auch zu lesen, an beliebigen Stellen. ab+, wo man nur ans Ende schreiben kann, ist dann wohl noch exotischer.
Wenn man wahlfreien Zugriff auf Textdateien hat, muß man ja per seek an bestimme Stellen springen, wobei man Zeichen liest und schreibt, die Positionen aber trotzdem in Bytes sind.
Da man nie weiß, wie viele Bytes eine Zeichenkette hat, ist es schwierig, die richtige Position anzusteuern. Wenn man mitten in einer Datei schreibt, dann kann der überschriebene Text entweder zu kurz oder zu lang in Bytes sein, was dann zu kaputtem Inhalt führen kann.
Auch bei Binärdateien wird man in den meisten Fällen entweder lesen oder schreiben wollen. Für exotische Fälle (z.B. Datenbanken) kann es manchmal Sinn machen, sowohl zu schreiben als auch zu lesen, an beliebigen Stellen. ab+, wo man nur ans Ende schreiben kann, ist dann wohl noch exotischer.
Hallo zusammen,
erstmal vielen Dank für all die Vorschläge. Da ich noch ein blutiger Anfänger bin wüsste ich nicht genau, wie genau und an welchen Stellen ich den Code ergänzen bzw. verbessern muss, um das gewünschte Resultat zu bekommen. Hat vielleicht jemand von euch eine Idee ?
Viele Grüße
erstmal vielen Dank für all die Vorschläge. Da ich noch ein blutiger Anfänger bin wüsste ich nicht genau, wie genau und an welchen Stellen ich den Code ergänzen bzw. verbessern muss, um das gewünschte Resultat zu bekommen. Hat vielleicht jemand von euch eine Idee ?
Viele Grüße
Hallo zusammen,
erstmal vieln Dank für die zahlreichen Antworten und Verzeihung für die späte Rückmeldung.
@_deets_ meinst du mit dem JSON-Modul die folgende Form, um ein JSON String zu Python-Code zu konvertieren : json.loads(json_string) ?
Da ich noch Anfänger bin, verstehe ich JSON nur grob.
_blackjack_ meinst du mit Dekodierung folgendes:
def on_message(client, userdata, msg):
topic = msg.topic
m_decode = str(msg.payload.decode())
print (m_decode)
@Dennis89 kein Problem =)
erstmal vieln Dank für die zahlreichen Antworten und Verzeihung für die späte Rückmeldung.
@_deets_ meinst du mit dem JSON-Modul die folgende Form, um ein JSON String zu Python-Code zu konvertieren : json.loads(json_string) ?
Da ich noch Anfänger bin, verstehe ich JSON nur grob.
_blackjack_ meinst du mit Dekodierung folgendes:
def on_message(client, userdata, msg):
topic = msg.topic
m_decode = str(msg.payload.decode())
print (m_decode)
@Dennis89 kein Problem =)
- __blackjack__
- User
- Beiträge: 13160
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@mmk62: Ich meinte das `encoding`-Argument beim öffnen von Dateien. Das sollte man bei Textdateien immer explizit angeben. Sonst wird da implizit ein plattform- und einstellungsabhängiger Wert genommen, der nicht mit der tatsächlichen Kodierung der Datei übereinstimmen muss.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Du musst mir die gegebene Antwort von Sirius3 nicht nochmal zur Bestaetigung vorlegen...
Es ist recht offensichtlich, das du *nichts* verstehst von dem, was deine Aufgabe von dir fordert. Ohne wenigstens ein Grundverstaendnis von Python und Programmierung (was sind Typen, wie wandelt man einen in einen anderen) wird's nix. Du wirst erstmal in Grundlagen investieren muessen. Mit Code-Fragment-Pingpong an die Forumsmitglieder hier wird es nichts.