Как бы вы сохранили данные пользователя в списке после закрытия программы без text.file? - PullRequest
0 голосов
/ 15 апреля 2019

Мне нужна помощь, чтобы сохранить пользовательский ввод в список после закрытия программы без файла .text (если возможно)программа открывается, я должен установить ее в пустую строку, потому что если я этого не сделаю, она не будет определена.

     python
def Test1():
    ABC_List = [""] #--i'll have to set the list to a blank string
    def Test2() #--Another function to skip past the function that defines the list
        user_input = input("Already have a letter: [Y]/[N]: ").upper()
        if user_input == ("Y"):
           print (" ")
           x = input("What is your letter: ")
           if x in ABC_List:
              print (" ")
              print ("Awesome! \n")
              Test2()
           else:
                print ("You do not have a letter, go and add one! \n")
                Test2() #-- I have no way of saving the data
        elif user_input == ("N"):
             print (" ")
             x = input("Enter a letter! ")
             if x in ABC_List:
                print (" ")
                print ("Sorry, letter is already in list! \n")
                Test2()
             else:
                  x.append(ABC_List)
                  Test()
                  print ("")
                  Test2()
    Test2()
Test1()

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Вы не можете сохранить состояние без выполнения ввода-вывода (ввода / вывода). Если вы не можете сохранить в локальном файле, ваш единственный вариант - ввод-вывод на другой компьютер (то есть, отправка данных через Интернет).

В противном случае для восстановления состояния из файла:

file = open('my_things.txt')

# strip() is needed because each line includes a newline character
# at the end
my_things = set(line.strip() for line in file)

file.close()

Проверьте, находится ли предмет в этом наборе:

if "something" in my_things:
    print("I found it!")
else:
    print("No such thing!")

Добавьте что-нибудь в свой набор:

my_things.add('something')

Запись элементов обратно в ваш файл:

file = open('my_things.txt', 'w')

for item in my_things:
    file.write(item + '\n')

file.close()

Объединение файловых операций:

with open('my_things') as file:
    my_things = set(line for line in file)

with open('my_things.txt', 'w') as file:
    file.write(item + '\n')
0 голосов
/ 15 апреля 2019

Если вы хотите, чтобы некоторые данные запоминались после завершения работы вашей программы, их необходимо сохранить где-то . Один из вариантов - текстовый файл, но есть много других - база данных, различные облачные хранилища, множество вариантов. Все это будет больше работать, чем текстовый файл.

Зачем вам нужно сохранять данные, и почему вы возражаете против текстового файла? Было бы легче предложить полезное предложение, если бы мы знали ответ на эти вопросы.

Обновлено

Поскольку это домашнее задание, я дам вам несколько советов, а не выполню всю работу за вас. : -)

Как вы сказали нам, вы будете передавать только сценарий, поэтому при запуске сценария может быть или не быть файл данных. Вы можете попробовать прочитать файл и иметь дело с тем фактом, что файл может отсутствовать. В Python мы решаем эту проблему, перехватывая исключения .

Попытка загрузить список из файла, но возврат к пустому списку, если файл не существует, может выглядеть примерно так:

try:
    with open('abc_list.txt') as abc_list_file:
        abc_list = [value.strip() for value in abc_list_file]
except IOError:
    abc_list = []

Вы можете добавить в этот список, как вы хотите в вашей программе. Когда у вас есть список, который вы хотите сохранить, сделайте что-то вроде:

with open('abc_list.txt', 'w') as abc_list_file:
    abc_list_file.writelines(abc_list)
...