Input verwenden zum öffnen von Datei

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
rennmaus
User
Beiträge: 217
Registriert: Dienstag 4. August 2020, 10:24

Hallo,
Ich versuche gerade mit einem Input eine Datei zu öffnen, das sieht bisher bei mir so aus:

filename = ("Spiel-"n,".txt")
myfile = open("Spiel-"n,".txt", 'r')
myfile.read()
if n==myfile:
print (myfile.read)

(n wird über den Input definiert) Ich möchte errecihen, dass der Spieler selbst entscheiden kann, wo sein Score abgelegt wird, indem er seinen Namen eingibt, und dann wird sein Score in seinem Ordner abgerufen.

Mfg
Christian
rennmaus
User
Beiträge: 217
Registriert: Dienstag 4. August 2020, 10:24

filename = "Spiel-"(n),".txt"
myfile = open('Spiel-'(n),'.txt', 'r')
myfile.read()
if n==myfile:
print (myfile.read)
muss glaube ich so sein, klappt aber trotzdem nicht
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Schau Dir das Kapitel zu Stringformatierung an.
Das my-Präfix ist absolut nichtssagend und kann weg. Dateien öffnet man immer mit dem with-Statement, und bei Text-Dateien sollte man ein Encoding angeben.
Den Inhalt, den Du per read liest, willst Du wahrscheinlich einer Variable zuweisen.
`n` (ich vermute mal, das ist die Variable mit dem Namen) kann niemals gleich einem geöffneten Fileobjekt sein, und eine Methode auszugeben ist wenig sinnvoll.
Daher lass ich den Teil mal weg.

Code: Alles auswählen

filename = f"Spiel-{name}.txt"
with open(filename, encoding="utf8") as game:
    content = game.read()
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@rennmaus: Wie kommst Du denn darauf, dass es so sein müsste? Zeig mal die Stelle in der Dokumentation die Dir diesen Eindruck vermittelt hat.

Arbeite mal ein Grundlagentutorial durch, da sollte dann auch vorkommen was man mit Zeichenketten so machen kann, also unter anderem auch wie man Werte in Zeichenketten formatiert.

Die Klammern um den Ausdruck dessen Ergebnis an `filename` zugewiesen wird, sind überflüssig. `filename` wird dann auch nirgends verwendet.

Was soll das `my`? Wenn es nicht auch ein `their_file` oder ein `our_file` gibt, macht es keinen Sinn da `my` davor zu pappen.

Dateien sollte man wo möglich mit der ``with``-Anweisung zusammen öffnen. Und bei Textdateien explizit die Kodierung angeben.

Einfach `read()` aufrufen und mit dem Ergebnis dann nichts machen, macht keinen Sinn. Ein weiterer `read()`-Aufruf würde nur noch eine leere Zeichenkette liefern, weil die Leseposition ja bereits durch das letzte `read()` am Ende der Datei steht.

Das wird aber auch nie ausgeführt, denn wenn `n` das Ergebnis von `input()` ist, dann ist es eine Zeichenkette und eine Zeichenkette ist niemals gleich einem Dateiobjekt.

Wenn es ausgeführt würde, dann wird da aber auch gar nicht `read` *aufgerufen*, sondern die `read`-Methode würde ausgegeben. Wenig sinnvoll.

`n` ist kein guter Name.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
rennmaus
User
Beiträge: 217
Registriert: Dienstag 4. August 2020, 10:24

Ah ok, danke!
Vrrsuche ich mal umzusetzen...
myfile, stand auf einer anderen Seite, dass funktioniert auch...
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@rennmaus: Was heisst ”funktioniert”? Natürlich ist das ein syntaktisch korrekter Name, aber es ist eben kein sinnvoller Name, und sinnvolle Namen sind wichtig. Nicht für den Rechner, sondern für den menschlichen Leser.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten