Speichernamen eingeben

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
oswin
User
Beiträge: 4
Registriert: Montag 27. Juli 2009, 09:51

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
svenXY
User
Beiträge: 27
Registriert: Dienstag 16. Juni 2009, 10:36
Kontaktdaten:

Code: Alles auswählen

filename=raw_input('gib einen Dateinamen ein (ohne txt): ')
save(filename + ".txt", X)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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))
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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, ...)
oswin
User
Beiträge: 4
Registriert: Montag 27. Juli 2009, 09:51

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
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Du nutzt offenbar kein Standard-Python... Oder machst du *-Importe?
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

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.
oswin
User
Beiträge: 4
Registriert: Montag 27. Juli 2009, 09:51

nagut ich hab "from pylab import*" benutzt
Kann sein das es daher kommmt.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das hab ich auch erst vermutet, allerdings speichert ``%save`` Zeilen und keine Ergebnisse und der letzte Post des OP schliesst das ganze auch aus ;)
oswin
User
Beiträge: 4
Registriert: Montag 27. Juli 2009, 09:51

Das Erbenis wird in Zeilen abgespeichert. Wenn mein Ergebnis ein N-dim. Array ist dann benutze ich reshape. Dann gehts.
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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