Seite 1 von 1

warum wird nichts in die Dati geschrieben?

Verfasst: Freitag 26. Juni 2015, 11:07
von Lena
Hey!

UNten steht mein Programmcode. Ziel ist es, dass das Ergebnis der Funktion ergaenzungen (ueb) in die neue datei 'neutext.txt' geschrieben werden. Jedoch wird lediglich die Datei erstellt, in ihr wird aber nichts geschrieben. Woran könnte das liegen?

Code: Alles auswählen

auf=open("text.txt",'r')
dicti={}
# in diesem Abschnitteinzelnen Wörter aus der Rohform in ein Dict gepackt.
for line in auf:
    alles= line.strip(" ")
    #durch len weiß man, wie viele woerter pro disziplin angegeben sind7
    #diszis= alle übungen mit der Oberkategorie!
    allet=disziplinen.split(" ")
    laenge=len(allet)
    #werte sind nur die uebungen!!!
    werte=(allet[1:])
    #hier werden der Oberkategorie jeweils die uebungen zugeordnet.
    dicti[allet[0]]=[werte]
print (dicti)
neu=open("neutext.txt", 'w')
ergaenzungen(ueb) # das ist eine Funktion, die ich definiert habe, in der einem dict ergänzungen beigefügt werden. Diese Funktioniert auch!
neu.write(auf)
neu.write(ergaenzungen(ueb))
neu.close()
auf.close()
Ich danke schon mal für Ratschläge!

Re: warum wird nichts in die Dati geschrieben?

Verfasst: Freitag 26. Juni 2015, 11:30
von /me
Lena hat geschrieben:

Code: Alles auswählen

neu=open("neutext.txt", 'w')
ergaenzungen(ueb) # das ist eine Funktion, die ich definiert habe, in der einem dict ergänzungen beigefügt werden. Diese Funktioniert auch!
neu.write(auf)
neu.write(ergaenzungen(ueb))
neu.close()
auf.close()
Ich danke schon mal für Ratschläge!
Erst mal die Ratschläge: Poste zumindest grundsätzlich lauffähigen Code (was ist disziplinen? was ist ueb?). Verwende sinnvolle Namen für die von dir gewählten Bezeichner. Verwende bitte endlich Code-Tags wenn du hier Code postest!

Zum Code: Warum rufst du die Funktion ergaenzungen zweimal auf und ignorierst dabei einmal den Rückgabewert? Warum bist du sicher, dass diese Funktion das tut was du möchtest? Was glaubst du was bei neu.write(auf) passiert?

Re: warum wird nichts in die Dati geschrieben?

Verfasst: Freitag 26. Juni 2015, 11:34
von darktrym
1. Fällt es jeden schwer Code lesen zu müssen, der nicht in dem Code-Tag ist.
2. Ist der Code maschinell erzeugt wurden? Der ergibt null Sinn. Wieso will man einen File Handle in eine Datei schreiben?
3. Die Namenswahl aller Bezeichner ist übel, nicht nur im übertragenen Sinn.

Re: warum wird nichts in die Dati geschrieben?

Verfasst: Freitag 26. Juni 2015, 11:42
von Lena
Hey! also die Funktion macht schon, was ich möchte^^....aber ich rufe sie zum ersten mal auf, damit sie ausgeführt wird. Dann rufe ich sie nochmal zum zweiten Mal auf, damit der returnwert der Funktion eben in die neue Datei geschrieben werden kann. Aber das funktioniert ja leider nicht...

Re: warum wird nichts in die Dati geschrieben?

Verfasst: Freitag 26. Juni 2015, 11:44
von Lena
also das erste mal ist quasi auch dafür, damit ich jetzt f´gerade sehen kann, dass die Funktion läuft, bzw. was sie macht. Für das endgülzige Programm würde es reichen, nur die neue Datei zu haben...

Re: warum wird nichts in die Dati geschrieben?

Verfasst: Freitag 26. Juni 2015, 11:53
von MagBen
Schau mal in die Funktion ergaenzungen() rein, steht da am Ende ein "return"? Wenn nicht, dann gibt die Funktion None zurück.
Den Rückgabewert einer Funktion kannst Du Dir zu Debug-Zwecken auch direkt auf der Konsole ausgeben:

Code: Alles auswählen

print( ergaenzungen(ueb) )
Lena hat geschrieben:Dann rufe ich sie nochmal zum zweiten Mal auf, damit der returnwert der Funktion eben in die neue Datei geschrieben werden kann.
Ich würde die Funktion nur einmal aufrufen.

Re: warum wird nichts in die Dati geschrieben?

Verfasst: Freitag 26. Juni 2015, 12:04
von cofi
/me hat geschrieben:Verwende bitte endlich Code-Tags wenn du hier Code postest!
Ein Minitutorial Weil du das so konsequent ignorierst: Ueber dem Textfeld beim Post schreiben gibt es eine Menueleiste mit einem Button namens "Code". Den drueckst du und erst dann schreibst du oder kopierst du deinen Code zwischen die [ code...] [ /code] Tags.

Fortgeschritten: Du schreibst selbst [ python] [ /python] um deinen Code.

Wie das ganze aussehen muss kannst du uebrigens sehen, wenn du einen Post "zitierst" der korrektes Highlighting hat.