variablen aus txt datei

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hey Leute. Ich versuche schon seit geraumer zeit aus einer g-code-txt Datei zeile für Zeile die variablen zu entnehmen.

    Mein Code sieht so aus

    Lines[]
    Text = open("pfad/Datei", "r")
    For Line in text.readlines():
    lines.append(line)
    Text.Close

    I=0

    While (1==1):
    Print (Lines[i])
    i= (i+1)

    Print ("ende")

    Das ergebnis ist, dass ich mit print(lines[i]) und i als zeilenangabe den Inhalt der Zeile auslesen kann.

    Die txt Datei lautet:

    ( This file created by CNC_profile.rb )
    ( Cutter Diameter: 0.11811023622047245 )
    ( Stock Size: 4.0551181102362195 x 4.055118110236214 x 0.3937007874015748 )
    G21 ( Unit of measure: millimeter )
    G90 ( Absolute programming )
    M03 ( Spindle on [clockwise] )

    G00 Z13,000 F30 (Move safety height)
    G00 X0.00 Y.00 F100 ( Move to origin )
    G00 X-1,500 Y-1,500 F100
    G01 Z0.0 F15
    G01 X-1,500 Y-1,500 Z0,000 F50
    G01 X-1,500 Y101,500 Z0,000 F50
    G01 X101,500 Y101,500 Z0,000 F50
    G01 X101,500 Y-1,500 Z0,000 F50
    G01 X-1,500 Y-1,500 Z0,000 F50
    G00 Z13,000 F30

    G00 X0.00 Y.00 F100( Move to origin )
    M05 ( Spindle stop )
    M02 ( End of program )

    end

    Im grunde währe ein Befehl perfeckt der folgendes tuht:

    Wenn zeile(A) nicht leer ist,Lies Zeile(A)
    Gib variablen aus zeile(A)aus.
    G=
    X=
    Y=
    Z=
    A=A+1
    Tuhe etwas mit den variablen


    Das Programm sollte in einer while schleife Zeile für Zeile die x,y und z werte als variablen behandeln können. Ich habe ein der. Teilprugram, das : punkt_anfahren(x,y,z) Heißt.
    Ich mochte dass er aus der txt Datei zuerst den punkt in zeile1 anführt, dann in zeile 2 usw.
    Bitte helft mir. Ich bin ratlos.

    Euer Morila

  • Variablen aus Text Datei auslesen ... versteht man erst mal was anderes drunter. Zunächst mal ist der Inhalt deiner Datei keine Variablen sondern einfacher Text bei dem es sich vermutlich um Koordinaten handelt. Was du nun möchtest ist von jeder Zeile, jede Spalte in eine Variable speichern - in.

    Man brauch also eine Schleife für jede Zeile der Datei. Dann muss man die Zeile anhand der Leerzeichen aufspalten und wenn die Spalte mit zum Beispiel "G" anfängt, erzeugt man ein Dictionary (sowas wie ein Array) dessen Index die Zeilennummer enthält und als Wert eben das nach "G". Erst danach hast du Variablen.


  • Variablen aus Text Datei auslesen ... versteht man erst mal was anderes drunter. Zunächst mal ist der Inhalt deiner Datei keine Variablen sondern einfacher Text bei dem es sich vermutlich um Koordinaten handelt. Was du nun möchtest ist von jeder Zeile, jede Spalte in eine Variable speichern - in.

    Man brauch also eine Schleife für jede Zeile der Datei. Dann muss man die Zeile anhand der Leerzeichen aufspalten und wenn die Spalte mit zum Beispiel "G" anfängt, erzeugt man ein Dictionary (sowas wie ein Array) dessen Index die Zeilennummer enthält und als Wert eben das nach "G". Erst danach hast du Variablen.

    Danke für die hilfe. Ja. Es handelt sich um Koordinaten, für Reagenzgläser in einer halte Vorrichtung.
    Aber ich bin leider absoluter Neuling. Python lerne ich erst seit 1woche.
    Jede Zeile einzelne auslesen klappt ganz gut.

    Lines[]
    Text = open("pfad/Datei", "r")
    For Line in text.readlines():
    lines.append(line)
    Text.Close

    I=0

    While (1==1):
    Print (Lines[i])
    i= (i+1)

    Print ("ende")

    So sind die zeilen schönem in lines[i] gespeichert. Wie breche ich die jetzt auf? Und wie erzähle ich der while schleife, dass sie enden soll, wenn eine leere Zeile steht?

    Ich hoffe ich nerfe nicht. aBer schonmal danke für die antwort

    Lg Morila

  • Zunächst mal ist GROSS-kleinschreibung wichtig :fies: Lines ist was anderes als lines. Lines[] wird aber auch nichts, wenn dann Lines=[] allerdings erzeigt das eine Liste kein Dictionary. Für ein Dictionary, sowas wie ein Array, muss man " Lines={} " verwenden um dies zu initialisieren.

    Auch wird " Text.Close " nicht funktionieren da es nur die Funktion "close" gibt, die man aber auch noch mit () aufrufen muss, also wenn dann: Text.close()
    Das gleiche gilt dann auch für die "for" Schleife, es gibt kein "For". Und auch kein While oder Print... :fies:

    Es würde auch helfen wenn du CODE Blöcke nutzt um Code oder Textinhalte zu posten - so kann man Fehler ausschließen.

    Es ist besser mit "with" zu arbeiten, das kümmert sich selber darum die Datei wieder zu schließen.
    Um dann leere Zeilen zu ignorieren kann man ganz einfach "strip()" verwenden um whitespaces usw raus zu schneiden, wenn dann noch ein Char übrig bleibt ist die Zeile halt nicht leer ;)
    Und um dann jede Spalte einer Zeile aufzusplitten nutzt man einfach "split()" bzw in diesem Fall soll ein Leerzeichen das Trennzeichen sein: split(" ")
    Dann hat man eine Liste, pro Spalte einen Eintrag. Hier gehen wir dann wieder mit einer "for" Schleife drüber und nutzen eine sehr nette Funktion: startswith
    Der Name dieser Funktion verrät eigentlich schon alles... Wir prüfen also einfach ob der Text der Spalte mit "G" beginnt und wenn das der Fall ist, nehmen wir uns alle Zeichen dieser Spalte abgesehen vom ersten (also G wird weggelassen) und speichern das in eine Variablen.

    Bedeutet also:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!