unerwünschte Leerzeile bei Datenspeicherung in csv Datei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
__blackjack__
User
Beiträge: 14418
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@bachatero18: Heute mit Python 2.7 anzufangen ist ein bisschen spät: https://pythonclock.org/

Die Baudrate sieht merkwürdig aus, und die Zeile ist auch gar nicht zuende.

Wenn Du genau den selben Quelltext hast und nur die Dateiendung unterschiedlich ist, dann schreibt Python die gleichen Daten. Wenn Du da einen Unterschied siehst, dann liegt das an dem Programm oder den Programmen mit denen Du Dir die Daten danach anschaust.

`Serial`-Objekte sind Kontextmanager – die kann man mit ``with`` benutzen. Genau wie man das auch bei der Datei machen sollte.

Die Datei immer wieder zu öffnen und zu schliessen ist ineffizient. Warum öffnest Du die nicht einmal am Anfang, vor der Schleife?

`Serial`-Objekte sind ausserdem über ihre Zeilen iterierbar. Da kann man also einfach eine ``for``-Schleife drüber schreiben statt der ``while``-Schleife. Wo man anstelle der 1 auch besser `True` schreiben würde.

Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen: Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).

Eingerückt wird mit vier Leerzeichen pro Ebene.
“The city's central computer told you? R2D2, you know better than to trust a strange computer!” — C3PO
Sirius3
User
Beiträge: 18419
Registriert: Sonntag 21. Oktober 2012, 17:20

Gute Bücher, die einem Anfänger das erklären, kenne ich nicht. Man schaut sich das einfach an guten Beispielen ab:

Code: Alles auswählen

import serial

with serial.Serial('COM3') as input, open("test.csv", "a") as output:
    for line in input:
        line = line.decode('ASCII')
        print(line.rstrip())
        output.write(line)
Benutzeravatar
__blackjack__
User
Beiträge: 14418
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@bachatero18: ``with`` kommt im Tutorial in der Python-Dokumentation vor, im Abschnitt „Reading and Writing Files“ mit Beispiel für eine Datei. Dann ist das Schlüsselwort selbst natürlich in der Referenzdokumentation mit einem allgemeinen Beispiel wo man auch sieht was Sirius3 gemacht hat: mehr als ein Objekt mit einem ``with`` zu verwenden. Dort ist ein Link auf einen Abschnitt für Kontextmanager allgemein und an den beiden letztgenannten Stellen ist ein Link auf „PEP343 The with statement“ wo die Spezifikation und die Motivation hinter dieser Einweisung dokumentiert ist. Auch mit Beispielen.

Das `Serial`-Objekte Kontextmanager sind, also mit ``with`` verwendet werden können, sieht man in der PySerial-Dokumentation gleich am Anfang im Abschnitt „Short inrtroduction“ der überwiegend aus kleinen Beispielen besteht.

Was für ein Array? Du liest da ja *Zeilen*. Was erwartest Du denn wie die aussehen? Was steht da drin? Wenn Du Binärdaten erwartest, dann darfst Du nicht `readline()` verwenden. Mir fällt auch gerade auf das Du einen Timeout setzt, im Code selbst dann aber die Fälle die dadurch entstehen können gar nicht behandelst‽

@Sirius3: Dein Beispiel entfernt doch jetzt aber alle Zeilenenden aus den Daten und schreibt alles in die gleiche Zeile in die Datei. Wenn da b'12\n3\n' gesendet wird, kann man das in der Datei nicht mehr von b'1\n23\n' unterscheiden weil da nur noch b'123' drin steht.
“The city's central computer told you? R2D2, you know better than to trust a strange computer!” — C3PO
Antworten