Seite 1 von 1
return einer Funktion
Verfasst: Montag 31. März 2008, 16:30
von The Spirit
Hi.
Ich habe ein Nebenfunktion, die eine routine abarbeitet.
Gleichzeitig benutze ich in der Funktion einen String, welcher der Dateiname ist. Dieser wird in dieser Funktion erst generiert.
Jetzt möchte ich, das ich einen return werte bekomme, welcher diesen Dateinamen enthält.
Die Variable, in der dieser String (Dateiname) steht, erstelle ich in der Funktion und hole ihn aus der funktion mit
heraus.
Wenn ich jetzt jedoch diese Variable an eine andere Funktion übergeben, erhalte ich in der Funktion nicht mehr meinen String sondern den Typ der variable.
Mittels print-befehl auf die variable 'dateiname' sehe ich dann folgendes im Terminal:
<type 'file'>
Was mache ich da falsch?
Thx
Verfasst: Montag 31. März 2008, 16:43
von querdenker
Meine Glaskugel meint das dein Code in etwa so aussieht:
Übergeben solltest du aber:
Allerdings könnten wir dir besser helfen, wenn du uns mal den betreffenden Code zeigst......
Siehe dazu auch :
hier!
Verfasst: Dienstag 1. April 2008, 08:01
von The Spirit
hier der teil des codes, in welcher die variable mit dem dateinamen "gefüttert "wird (in file steht der dateiname)
Code: Alles auswählen
def process_file(fn):
filename = logfile_entry.get()
outfilename = filename + '_zwischen.txt'
file = str(outfilename.split('/')[-1])
print file
und hier soll der dateiname widerverwendet werden
Code: Alles auswählen
def auswertung(datei):
print '\nstarte Auswertung ...'
print datei
original = open(datei, "r")
diese funktion wird mittels
aufgerufen
Verfasst: Dienstag 1. April 2008, 08:28
von Jan-Peer
Also bei 'file' würde ich eher einen Handler auf die Datei erwarten als einen String mit dem Dateinamen. Du solltest auch aus einem anderen Grund deine Namensgebung überdenken: 'file' ist nämlich eine eingebaute Funktion zum Öffnen von Dateien, die du auf diese Weise überschreibst und damit nicht mehr so einfach verwenden kannst.
Ansonsten teste doch mal, ob logfile_entry.get() dir auch wirklich einen String zurückliefert. Ich kann das hier nämlich nicht.
Verfasst: Dienstag 1. April 2008, 08:35
von helduel
Moin,
The Spirit hat geschrieben:hier der teil des codes, in welcher die variable mit dem dateinamen "gefüttert "wird (in file steht der dateiname)
Code: Alles auswählen
def process_file(fn):
filename = logfile_entry.get()
outfilename = filename + '_zwischen.txt'
file = str(outfilename.split('/')[-1])
print file
oben hast du noch geschrieben, dass du return verwendest. Hier hast du ein print. Das kann nicht funktionieren. Außerdem ist file ein built-in - diesen solltest du als Namen gar nicht verwenden.
Da file ein built-in ist und ein Typ, übergibst du hier deiner Funktion auswertung lediglich den Typ file. Du wirst vor diesem Aufruf file gar nichts Neues zuweisen:
Code: Alles auswählen
file = process_file(blubber) # diese Fkt sollte mit return einen String zurückgeben!
auswertung(file)
Aber wie gesagt: file als Variablennamen zu verwenden ist eine schlechte Idee.
Verfasst: Dienstag 1. April 2008, 09:10
von The Spirit
sorry, das
hatte ich vergessen zu posten, da zwischendrin noch ein wenig code ist
danke für den tip, werd ich gleich mal testen