Eingabefeld in Txt Datei senden

Fragen zu Tkinter.
Antworten
Phobit
User
Beiträge: 185
Registriert: Freitag 4. Mai 2018, 18:13

Huhu nochmal,
habe mal wieder ein Problem. Ich versuche zur Zeitein größeres Python Programm mit tkinter zu schreiben. aktuell ist das iel, dass der nutzer, wenn er einen Bug sieht, eine Nachricht absenden kann die in einer txt datei gespeichert wird. klappt auch schon, nur das Porblem: er schreibt jeden Eintrag ohne leertaste hinter den vorherigen. mit \n gehts nicht, dann wirft er nen error raus.Hier wäre mal der Code:

Code: Alles auswählen

def bugs():
        bags = eingabefeld.get()
        sdatei = open('News.txt')
        l = sdatei.readlines()
        sdatei.close()
        l.append(bags)
        sdatei = open('News.txt', 'w')
        sdatei.write("".join(l))
        sdatei.close()
gibts irgendwie ne Möglichkeit hinter meine Variable "bags", die heißt nur zum test so, eine \n zu setzen oder generell nach jedem Eintrag ne neue Zeile zu setzen?
Mir egal, ob der Code schön ist oder nicht.
Hauptsache er funkt!
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

Moin,

was genau hast du denn versucht, um einen Zeilenumbruch einzufügen und welche Fehlermeldung hast du bekommen?
Phobit
User
Beiträge: 185
Registriert: Freitag 4. Mai 2018, 18:13

narpfel hat geschrieben: Sonntag 13. Mai 2018, 16:10 Moin,

was genau hast du denn versucht, um einen Zeilenumbruch einzufügen und welche Fehlermeldung hast du bekommen?
Also, versucht habe ich folgendes:

Code: Alles auswählen

def bugs():
        bags = eingabefeld.get()
        sdatei = open('News.txt')
        l = sdatei.readlines()
        sdatei.close()
        l.append(bags, \n) #HIER einfach ein \n eingefügt
        sdatei = open('News.txt', 'w')
        sdatei.write("".join(l))
        sdatei.close()
        
Und als Fehlermeldung kam dann raus:
Syntac Error
unexpected character after line continuation charcter
Mir egal, ob der Code schön ist oder nicht.
Hauptsache er funkt!
narpfel
User
Beiträge: 643
Registriert: Freitag 20. Oktober 2017, 16:10

`"\n"` ist eine Zeichenkette und muss deswegen wie jede andere Zeichenkette in Anführungszeichen geschrieben werden. Dann wirst du noch ein Problem haben: Die `append`-Methode von Listen erwartet genau ein Argument.
Phobit
User
Beiträge: 185
Registriert: Freitag 4. Mai 2018, 18:13

narpfel hat geschrieben: Sonntag 13. Mai 2018, 16:40 `"\n"` ist eine Zeichenkette und muss deswegen wie jede andere Zeichenkette in Anführungszeichen geschrieben werden. Dann wirst du noch ein Problem haben: Die `append`-Methode von Listen erwartet genau ein Argument.
Das hab ich gerade eben vorhin auch schon gesehen, aber es wird doch wohl eine Möglichkeit geben, um da nach jeder Meldung einen Zeilenumbruch zu schalten... :K
Mir egal, ob der Code schön ist oder nicht.
Hauptsache er funkt!
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Statt jedesmal die gesamte Datei zu lesen und wieder zu schreiben, reicht es hier, einfach eine Zeile anzuhängen:

Code: Alles auswählen

def bugs(eingabefeld):
        bags = eingabefeld.get()
        with open('News.txt', 'a') as news:
            news.write(bags + '\n')
Phobit
User
Beiträge: 185
Registriert: Freitag 4. Mai 2018, 18:13

Sirius3 hat geschrieben: Montag 14. Mai 2018, 06:28 Statt jedesmal die gesamte Datei zu lesen und wieder zu schreiben, reicht es hier, einfach eine Zeile anzuhängen:

Code: Alles auswählen

def bugs(eingabefeld):
        bags = eingabefeld.get()
        with open('News.txt', 'a') as news:
            news.write(bags + '\n')
AHH so geht das mit dem write :lol: Ja wusste nicht wie das geht, aber ich hatte es jetzt auch gelöst, indem ich einfach nochmal ne Zeile angehängt habe mit append("\n") so gings dann auch...Aber danke auf jeden Fall für die Hilfe!
Mir egal, ob der Code schön ist oder nicht.
Hauptsache er funkt!
Antworten