2016-04-18 13 views
0

Problem Ich habe ein Problem. Ich erstelle eine Datei mit w+ es erstellt eine Textdatei, die ich brauche, wenn es nicht existiert. Speichern Sie die Datei dann unter Verwendung von w. Öffnet die Datei mit nur einfach open("file.txt"). kann jemand bitte eine schnelle lösung geben. Was mache ich hier falsch? ich danke dir sehr!Python: Speichern Laden Öffnen und Aufteilen von Textdateien

Ich bekomme einen Fehler beim Laden der Datei aus irgendeinem Grund wird es mir nicht erlauben, es zu teilen, so dass es eine Variable wird.

Alles funktioniert, wenn ich die w+from file = open("file.txt", "w+") in def player() entfernen. Wenn die Textdatei nicht existiert, erstellt sie keine neue Textdatei und das Programm wird nicht geladen.

def save(): 
    file = open("file.txt", "w") 
    for i in myList: 
    file.write(i) 
    file.write(" ") 
    file.write(str(player)) 
    file.write(" ") 
    file.write(str(turn)) 
    print("Game Saved!") 
def load(): 
    # it can print the file text but does not print the variables theList, player, turn 
    file = open("file.txt") 
    for line in file: 
    theList, player, turn = line.split(" ") 


    print("Game Loaded!") 

    if player == "1" and turn == "0" 
# example conditions, this is where i get error saying 
# local variable 'player' referenced before assignment 

def superplayer(): 
    file = open("file.txt", "w+") 
    for line in file: 
     theList, player, turn = line.split(" ") 
# and my code goes on 
+0

Sie einen anderen Dateinamen öffnen. sollte "tic.txt" nicht "file.txt" sein? oder ich habe dich missverstanden? –

+0

Entschuldigung .. Tippfehler, es ist file.txt – Kitty

+0

könnten Sie die genaue Fehlermeldung und welche Zeile kommt es aus? –

Antwort

0

Sie links ab auf einen Doppelpunkt if player == "1" and turn == 0. Versuchen Sie außerdem, das Schlüsselwort with zu verwenden, wenn Sie Dateien verwenden, es ist Konvention und macht die Dinge für Sie viel einfacher.

Stellen Sie außerdem sicher, dass player mindestens einen temporären Wert hat, wenn das Problem nicht durch das obige behoben wird.

+0

was meinst du mit temporärem Wert? kannst du meinen Code bitte überarbeiten? – Kitty

+0

Zunächst ist in Python einrückung erforderlich. Ihr 'for' Block hat keine Einrückung, und das kann das gesamte Programm durcheinander bringen. Mit einem temporären Wert, sagen Sie das 'player =" beep "' oder 'player =" "'. –

+0

danke! alles funktioniert, wenn ich das 'w +' 'aus file = open (" file.txt "," w + ")' in 'def player()' lösche. Wenn die Textdatei nicht existiert, erstellt sie keine neue Textdatei und das Programm wird nicht geladen. – Kitty

1

Schliessen Sie jemals die Datei, die Sie in jeder Methode öffnen? Eine gute Möglichkeit, Dateien zu handhaben ist, mit Anweisung:

with open('file.txt', 'w+') as file: 
    file.seek(0) 
    #Do your file handling here 
... 

Haben Sie die Datei auf korrekte Informationen überprüft, da der Spieler nicht zugeordnet ist?

Versuchen Sie auch zu Beginn der Datei gehen, bevor es mit „w +“ zu lesen:

file.seek(0) 
+0

aus irgendeinem Grund wird nicht gespalten, und die Variablen erhalten, wenn geladen. es ist immer noch der Fehler selbst mit 'mit' – Kitty