如何将Python 3.4输入信息导出到JSON?

如何将Python 3.4输入信息导出到JSON?,python,json,save,Python,Json,Save,我正在尝试建立一个人工智能程序,它将跟踪信息和其他东西,但在试图将信息导出到文件时遇到了问题。我是Python新手,希望得到一些帮助来确定可能存在的问题 这是源代码 #Importations import jsonpickle import math import os import sys import time from random import randrange, uniform #Setups SAVEGAME_FILENAME = 'aisetup.json' game_stat

我正在尝试建立一个人工智能程序,它将跟踪信息和其他东西,但在试图将信息导出到文件时遇到了问题。我是Python新手,希望得到一些帮助来确定可能存在的问题

这是源代码

#Importations
import jsonpickle
import math
import os
import sys
import time
from random import randrange, uniform
#Setups
SAVEGAME_FILENAME = 'aisetup.json'
game_state = dict()
#Program AI
class Computer(object):
    def __init__(self, name, creator):
        self.name = name
        self.creator = creator
#User Information
class Human(object):
    def __init__(self, name, birth):
        self.name = name
        self.birth = birth       
#Load Program Save
def load_game():
    """Load game state from a predefined savegame location and return the
    game state contained in that savegame.
    """
    with open(SAVEGAME_FILENAME, 'r') as savegame:
        state = jsonpickle.decode(savegame.read())
    return state
#Save Program to JSON
def save_game():
    """Save the current game state to a savegame in a predefined location.
    """
    global game_state
    with open(SAVEGAME_FILENAME, 'w') as savegame:
        savegame.write(jsonpickle.encode(game_state))
#Initialize Program
def initialize_game():
    """Runs if no AISave is found"""
    UserProg = Human('User', '0/0/0')
    AISystem = Computer('TempAI', 'Austin Hargis')

    state = dict()
    state['UserProg'] = [UserProg]
    state['AISystem'] = [AISystem]
    return state
#TextPad
#Main Code - Runs Multiple Times per Being Openned
def prog_loop():
    global game_state
    name = input (str("What is your name?: "))
    save_game()

#Main Program
def main():
    """Main function. Check if a savegame exists, and if so, load it. Otherwise
    initialize the game state with defaults. Finally, start the game.
    """
    global game_state

    if not os.path.isfile(SAVEGAME_FILENAME):
        game_state = initialize_game()
    else:
        game_state = load_game()
    prog_loop()
#Launch Code
if __name__ == '__main__':
    main()
每次运行此操作时,它都会将信息导出到如下文件:

{"UserProg": [{"birth": "0/0/0", "py/object": "__main__.Human", "name": "User"}], "AISystem": [{"py/object": "__main__.Computer", "name": "TempAI", "creator": "Austin Hargis"}]}
我希望它将您的姓名导出到文件夹中,但它无法正常工作。

您从未对用户输入的姓名执行任何操作:

def prog_loop():
    global game_state
    name = input (str("What is your name?: "))
    save_game()
name只是一个局部变量。如果要将其保存为人名,则需要在游戏状态的UserProg条目上设置:

def prog_loop():
    name = input("What is your name?: ")
    # game_state['UserProg'] is a list with one Human instance in it
    game_state['UserProg'][0].name = name
    save_game()

因为您正在更改game_state中包含的可变对象,而不是分配给game_state本身,所以不需要全局语句。str调用也是多余的,而。。。语法已经生成了一个字符串,将其再次转换为字符串没有什么意义。

啊,我明白了。我以为我做这件事是对的。我以前有过类似的东西,但它不起作用,所以我把它扔掉了。我该如何再次使用这些信息?就像名字一样,当节目开始时,我希望它说欢迎回来的名字。我将如何再次使用该名称?@Austinargis:加载后,您可以访问game_state['UserProg'][0]。请重新命名。我尝试过使用该名称,但不确定如何使用以及在何处使用。比如在我关闭程序并重新打开它之后,我将如何应用它来再次使用该名称?它当前告诉我名称未定义。就在游戏状态=加载游戏行之后,游戏状态被加载,游戏状态['UserProg'][0]。名称应该可用。