Seite 1 von 1

Speichernamen eingeben

Verfasst: Montag 27. Juli 2009, 10:00
von oswin
Hallo,

Ich will eine kleine Rechnung mit Python durchführen und das Ergebnis als Textdatei speichern.

Bisher geht das einfach mit save("filename.txt", X) prima! (X ist hier das Ergebnis)
Nun wollte ich eine Abfrage des Speichernamen einbauen mittels raw_input(). Aber ich weiß nicht recht, wie ich den eingegebenen Namen mit dem save()-Befehl verbinde. Im Prinzip soll statt filename der eingegebene Name eingetragen werden, wobei die Dateiendung .txt bleiben soll.

Wie kann man das realisieren?

Danke für eure Antworten!

Oswin

Verfasst: Montag 27. Juli 2009, 10:14
von svenXY

Code: Alles auswählen

filename=raw_input('gib einen Dateinamen ein (ohne txt): ')
save(filename + ".txt", X)

Verfasst: Montag 27. Juli 2009, 10:17
von cofi

Code: Alles auswählen

def custom_save(X, extension='.txt'):
    fname = raw_input('Save as? ')
    if not fname.endswith(extension):
        fname += extension
    save(fname, X)
Was auch immer dein ominoeses X sein soll ..

Allerdings koenntest du mal erklaeren was ``save`` ist und wo es herkommt zu Python gehoert es jedenfalls nicht.

Verfasst: Montag 27. Juli 2009, 10:33
von snafu
cofi hat geschrieben:Was auch immer dein ominoeses X sein soll ..
`X` ist das Ergebnis seiner Rechnung, hat er gesagt. Diese Frage würde vermutlich nicht auftachen, wenn man als Namen statt dem `X` etwas eindeutigeres wählen würde - z.B. `result`.

Was `save()` macht, finde ich für seine Frage relativ unerheblich. Vermutlich etwas wie:

Code: Alles auswählen

def save(filename, result):
    with open(filename, 'w') as f:
        f.write(str(result))

Verfasst: Montag 27. Juli 2009, 10:39
von cofi
snafu hat geschrieben:
cofi hat geschrieben:Was auch immer dein ominoeses X sein soll ..
`X` ist das Ergebnis seiner Rechnung, hat er gesagt. Diese Frage würde vermutlich nicht auftachen, wenn man als Namen statt dem `X` etwas eindeutigeres wählen würde - z.B. `result`.
Dass es das Ergebnis ist, sagt er ja, aber um das vernuenftig zu implementieren muesste man wissen, was das Ergebnis eigentlich ist. Ich hab aber das Gefuehl, dass das sowieso eng mit dem ebenfalls ominoesen ``save`` verknuepft ist ;)

Im Uebrigen ist das das voellig falsche Unterforum ...

Edit (Leonidas): Verschoben.

Verfasst: Montag 27. Juli 2009, 10:53
von snafu
Ja, gut. Ich bin jetzt von einem simplen Ergebnis ausgegangen, wo es ein einzelner numerischer Wert ist. Kann natürlich auch - je nach Rechnung - ein strukturiertes Objekt sein (Tuple, Dict, ...)

Verfasst: Montag 27. Juli 2009, 11:01
von oswin
Ja hallo alle,

Danke für eure Antworten!

Keine Ahnung wo die Funktion "save" hingehört. Aber es funktioniert!

Ich habs so hingekriegt
----------------------------------------------------
G = ones((3,3))

Blabla= raw_input("Bitte Name eingeben")

filename = '%(#)s.txt' % {"#":Blabla }

save(filename,G)
----------------------------------------------------

Danke!

Oswin

Verfasst: Montag 27. Juli 2009, 11:03
von snafu
Du nutzt offenbar kein Standard-Python... Oder machst du *-Importe?

Verfasst: Montag 27. Juli 2009, 11:06
von Pekh
Nutzt du zufällig IPython? Da gibt es sowas nämlich. Zum Speichern einer "Menge von Linien" in eine Datei. Was jetzt natürlich wieder der Frage nach der Beschaffenheit von "result" Auftrieb gibt.

Verfasst: Montag 27. Juli 2009, 11:14
von oswin
nagut ich hab "from pylab import*" benutzt
Kann sein das es daher kommmt.

Verfasst: Montag 27. Juli 2009, 11:16
von cofi
Das hab ich auch erst vermutet, allerdings speichert ``%save`` Zeilen und keine Ergebnisse und der letzte Post des OP schliesst das ganze auch aus ;)

Verfasst: Montag 27. Juli 2009, 11:40
von oswin
Das Erbenis wird in Zeilen abgespeichert. Wenn mein Ergebnis ein N-dim. Array ist dann benutze ich reshape. Dann gehts.

Verfasst: Montag 27. Juli 2009, 11:53
von snafu
oswin hat geschrieben:nagut ich hab "from pylab import*" benutzt
Kann sein das es daher kommmt.
Tja, wenn man auf solche *-Import verzichtet, wüsste man das. ;) Das ist eigentlich genau das, was ich in Sprachen wie C so hasse: Man weiß oft nicht auf Anhieb, zu welcher Bibliothek etwas gehört. Besonders beim Lesen von fremden Quelltext finde ich das anstrengend.