Как импортировать содержимое из текстового файла и добавлять их в переменные

#python

#python

Вопрос:

У меня есть файл настроек для игры, подобной monopoly, которую я создаю, в файле настроек есть такие параметры, как количество людей, играющих и еще много чего, я хотел бы знать, как импортировать настройки из этого текстового файла и перенести их в разные переменные, например, количество игроков в файле настроекперейдите к переменной numPlayers в реальном коде, чтобы я мог использовать ее для других игр, а также использовать настройки в коде

Это мой код:

     def inputs(line, typeinp=None, start=None, end=None):
        while True:
            string = input(line)
            if typeinp != None:
                try:
                    if typeinp == "string":
                        string = str(string)
                    elif typeinp == "integer":
                        string = int(string)
                    if start != None and end != None:
                        while not (string >= start and string <= end):
                            print("Please input a number between", str(start)   "-"   str(end))
                            string = int(input(line))
                    break
                except:
                    print("Plese input a", typeinp)
            else:
                break
        return string


    # Settings file, if user chooses to run setup this is all the setup questions


    def gameSettingsSetup():
        settingsCheck = open("settings.txt", "r")
        print("Lets setup")
        # Int Setup questions
        numPlayers = str(inputs('How many real players are playing: ', "integer"))
        numAIplayers = str(inputs('How many AI players will be playing?: ', "integer"))
        AILevel = str(inputs("What AI difficulty level would you like? (Easy, Normal, Hard): "))
        while True:
            if AILevel == "Easy" or AILevel == "Normal" or AILevel == "Hard":
                startingMoney = str(inputs("How much money does everyone start with? Max: 10 000 (Keep in mind "
                                           "this does not affect the property prices) ", "integer", 100, 10000))
                break

            else:
                print("Please enter a valid input (make sure to capitalize the first letter)")
                AILevel = str(inputs("What AI difficulty level would you like? (Easy, Normal, Hard): "))

        # sends over the settings into the text file as well as monoset check
        if "MonoSet1-1" in settingsCheck.read():
            with open("settings.txt", "w") as file:
                file.write("MonoSet1-1: true"   "n")
                file.write("numPlayer: "   numPlayers   "n")
                file.write("numAIplayer: "   numAIplayers   "n")
                file.write("AI Level: "   AILevel   "n")
                file.write("startingMoney: "   startingMoney   "n")
                file.close()

        # Allows for access to the settings file and drops values into a list
        settings = []
        with open("settings.txt") as file:
            for line in file:
                line = line.split(":")
                line = line[1]
                line = line.rstrip("n")
                line = line[1:]
                line = line.split(" ")
                try:
                    for x in range(len(line)):
                        line[x] = int(line[x])
                    line = (line[0], line[1])
                except:
                    line = line[0]
                    settings.append(line)
        file.close()
        print("Alright the setup is complete, Your game will start now....")
        time.sleep(1)

        return settingsCheck, settings
  

Комментарии:

1. Рассмотрите возможность использования файла settings.json вместо текстового файла. Это позволит вам обращаться к переменным как к ключам в dict.

2. для хранения данных лучше использовать другой формат — файл JSON, .ini, yaml или модуль pickle

3. Если вам нравится .ini формат файла для сохранения настроек, рассмотрите возможность использования configparser

4. Если вы хотите иметь возможность редактировать файл, я бы рекомендовал .ini/configparser . Слишком легко случайно повредить файлы json и yaml при редактировании.