Seite 1 von 1

Input verwenden zum öffnen von Datei

Verfasst: Donnerstag 6. August 2020, 10:34
von rennmaus
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

Re: Input verwenden zum öffnen von Datei

Verfasst: Donnerstag 6. August 2020, 10:48
von rennmaus
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

Re: Input verwenden zum öffnen von Datei

Verfasst: Donnerstag 6. August 2020, 10:55
von Sirius3
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()

Re: Input verwenden zum öffnen von Datei

Verfasst: Donnerstag 6. August 2020, 10:55
von __blackjack__
@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.

Re: Input verwenden zum öffnen von Datei

Verfasst: Donnerstag 6. August 2020, 11:10
von rennmaus
Ah ok, danke!
Vrrsuche ich mal umzusetzen...
myfile, stand auf einer anderen Seite, dass funktioniert auch...

Re: Input verwenden zum öffnen von Datei

Verfasst: Donnerstag 6. August 2020, 11:32
von __blackjack__
@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.