Zeile aus TXT Datei

  • Hallo,


    sich schon x mal besprochen aber trotzdem komm ich nicht klar.


    Ich habe ein TXT Datei da stehen mehrere Zeilen drin, so in etwa.

    12345

    65443

    23445


    jetzt lese ich die Datei ein und möchte nur die Zweite Zeile nutzen wie bekomme ich das hin?


    so währe mein Ansatz...


    Code
    1. with open("test.txt", "r") as Daten:
    2. Line1 = Daten.readline(5)
    3. Line2 = Daten.readline(???)
    4. Line3 = Daten.readline(???)
    5. print (Line1)
    6. print (Line2)
    7. Print (Line3)
  • Ok Danke!


    und wie währe es dann wenn ich jede Zeile zuordnen möchte?


    Code
    1. with open("file.txt", "r") as f:
    2.     first_line = f.read().splitlines()[0]
    3. second_line = f.read().splitlines()[1]
  • ich möchte die Werte aus einer TXT Datei lesen sind 3 untereinander stehende Werte die sich durch ein anderes Programm immer wieder ändern.


    diese möchte ich dann jeden für sich in einem tkinter fenster anzeigen...


    wenn ich es so mache wie die funktioniert es nur jeweils mit einer Zeile oder ich muss immer wieder die txt neu öffnen um die Nächte Zeile zu lesen, was mich zwar zum Ziel bringt aber nicht schön ist

  • Aber bitte nicht so:


    Python
    1. with open("file.txt", "r") as f:
    2. lines = f.read().splitlines()
    3. foo = lines[0]
    4. bar = lines[1]
    5. baz = lines[2]


    Sondern so:

    Python
    1. with open("file.txt", "r") as f:
    2. lines = f.read().splitlines()
    3. foo, bar, baz = lines


    bzw so, wenn du nicht zu 100% sicher bist, dass es drei Zeilen sind, sondern ggf auch mehr:

    Python
    1. with open("file.txt", "r") as f:
    2. lines = f.read().splitlines()
    3. foo, bar, baz, *_ = lines
  • Also Danke noch mal für die Hilfe und Funktioniert auch und Übergabe ein tkinter Label usw. habe ich auch so weit hinbekommen.


    Jetzt stehe ich aber vor einem weiteren Problem.


    Also ich löse eine Funktion aus mit der die TXT Datei gelesen wird, so wie du es mir gezeigt hast.

    jetzt möchte ich gern mit einem wert, ich nehme mal "bar" eine CSV Datei in der ersten Spalte nach "bar" durchsuchen und bei gefundenen Wert den in gleicher Zeile aber 2. Spalte einer Variablen zuordnen.


    so weit ist mein Ansatz


  • Code
    1. with open("test.csv",newline="") as file:
    2. reader = csv.reader( file )
    3. for row in reader:
    4. if row[0] == foo:
    5. print( row[1] )
  • habe ich versucht bekomme aber die Ausgabe "not found"?


  • Hmm probiere hin und her komme aber nicht zum erfolg :(


    Kurz noch mal zur Erklärung, Also ich lese aus der TXT eine 6 Stellige Zahl aus und nenne sie "foo"

    diese 6 Stellige Zahlt steht irgendwo in der ersten Spalte der .csv Datei. Diese soll gesucht werden und dann eine 4 Stellige Zahl aus der 2. Spalte ausgelesen werden und z.B. "picture" genannt werden. diesen wert soll dann die Dateiendung .jpg hinzugefügt werden und dann halt ein canvas mit einem jpg Bild wessen Name aus der 4 Stelligen Zahl besteht geladen wird.

    Das Canvas habe ich schon erstellt.


    Jürgen

    Damit komme ich noch nicht klar? Verstehe es einfach nicht

  • Jürgen

    Damit komme ich noch nicht klar? Verstehe es einfach nicht

    Dein test.txt hat folgenden Inhalt:

    Code
    1. 12345
    2. 65443
    3. 23445

    Das Bash-Script "test.sh" besteht aus folgenden Zeilen:

    Dann rufst Du es auf:

    bash test.sh

    Ergebnis:

    12345
    65443
    23445


    Ganz einfach, oder? Jetzt kannst Du Dir die Zeile aussuchen, die Du haben willst.


    MfG


    Jürgen

    Jahrelang wurde gesagt: Das geht nicht, das gibt es nicht und das war schon immer so.
    Und dann kam einer, der wußte das nicht, und hat es dann einfach gemaccht.

    Meine Projekte

    Avatar


  • ich möchte die Werte aus einer TXT Datei lesen sind 3 untereinander stehende Werte die sich durch ein anderes Programm immer wieder ändern.

    Hallo Streifenhase ,

    wenn es irgendwie technisch möglich ist, würde ich auf solche File Schnittstellen möglichst verzichten - irgendwann versucht das eine Programm zu lesen, während das andere gerade schreibt. Aber solange keine Menschenleben dran hängen, ist's natürlich halb so schlimm...

  • frimp

    leider geht es in meinen Augen nur so, aber Danke für den Tip!


    Tell

    foo wird nur gefunden wenn ich nur eine Spalte in der csv habe, bringt aber bei der Ausgabe den Fehler

    "IndexError: list index out of range"

    sobald ich einen Wert in Spalte 2 bringe findet er foo nicht in der csv.


    Mal dumm gesagt sieht es so aus als ob er nicht Zeilen und Spalten getrennt ausließt sondern nur Zeilen. oder?


    csv ist mit Excel erstellt, vielleicht hilft das weiter

  • leider geht es in meinen Augen nur so

    Dann würde ich Dir vorschlagen, noch weitere Augenpaare zu Rate zu ziehen – z.B. hier im Forum. Wenn Du uns Dein Projekt schildern würdest, statt technische Detailfragen zu stellen, könnten wir evt. andere Ansätze vorschlagen und Dir damit effektiver helfen.

  • jetzt funktionier es nach Stunden Probieren!


  • > jetzt funktionier es nach Stunden Probieren!

    Drei Zeilen aus dem File zu posten haette diese Stunden gespart!


    CSV heisst naemlich COMMA SEPARATED VALUES.

  • CSV heisst naemlich COMMA SEPARATED VALUES.

    stimmt, allerdings ist das mit Excel (mit dem wird ja das CSV File generiert) so eine Sache. Da hängt es nämlich von der Windows Konfiguration ab. Auf einem US System ist es wirklich ein "," und auf einem deutschen z.B. ein ";" (der sog. List Seperator findet man, soweit ich mich erinnern kann, irgendwo dort wo man die Datumsformate, Dezimaltrennzeichen usw. definiert")