warum wird nichts in die Dati geschrieben?

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
Lena
User
Beiträge: 22
Registriert: Mittwoch 24. Juni 2015, 09:37

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!
Zuletzt geändert von cofi am Freitag 26. Juni 2015, 12:05, insgesamt 1-mal geändert.
Grund: Code Tags ergaenzt
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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?
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

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.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Lena
User
Beiträge: 22
Registriert: Mittwoch 24. Juni 2015, 09:37

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...
Lena
User
Beiträge: 22
Registriert: Mittwoch 24. Juni 2015, 09:37

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...
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

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.
a fool with a tool is still a fool, www.magben.de, YouTube
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

/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.
Antworten