2016-04-18 2 views
0

Задача У меня проблема. Я создаю файл с использованием w+, он создает текстовый файл, который мне нужен, если он не существует. Затем сохраните файл, используя w. Открывает файл, используя только open("file.txt"). может кто-нибудь дать ему быстро исправить, пожалуйста. что я делаю неправильно здесь? Спасибо большое!Python: Сохранение загрузки Открытие и разбиение текстовых файлов

Я получаю сообщение об ошибке при загрузке файла по какой-либо причине, он не позволит мне разбить его так, чтобы он стал переменной.

Все работает, когда я удалить w+from file = open("file.txt", "w+") в def player(). но если текстовый файл не существует, он не создаст новый текстовый файл, и программа не загрузится.

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

вы открываете другое имя файла. не должен ли «tic.txt» быть «file.txt»? или я вас неправильно понял? –

+0

извините .. опечатка, это файл.txt – Kitty

+0

Вы могли бы отправить точное сообщение об ошибке и из какой строки оно исходит? –

ответ

0

Вы оставили двоеточие прочь на if player == "1" and turn == 0. Кроме того, при использовании файлов старайтесь использовать ключевое слово with, это соглашение и упрощает для вас работу.

Кроме того, убедитесь, что player имеет хотя бы временное значение, если указанное выше не устраняет проблему.

+0

Что вы подразумеваете под временным значением? можете ли вы пересмотреть мой код, пожалуйста. – Kitty

+0

Прежде всего, требуется отступ в python. В вашем блоке 'for' нет отступов, и это может испортить всю программу. По временному значению скажите, что 'player =" beep "или' player = "" '. –

+0

спасибо! все работает, когда я удаляю 'w +' 'из файла = open (" file.txt "," w + ")' в 'def player()'. но если текстовый файл не существует, он не создаст новый текстовый файл, и программа не загрузится. – Kitty

1

Вы когда-нибудь закрывали файл, который вы открываете в каждом методе? Хороший способ обработки файлов используется с утверждением:

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

Вы проверили файл для корректной информации, так как игрок не назначен?

Также попытайтесь идти в начале файла перед чтением с «ш +»:

file.seek(0) 
+0

по какой-то причине он не разбивается и получает переменные при загрузке. он все еще получает ошибку даже с 'with' – Kitty

Смежные вопросы