Pythonic从文本文件导入多个词典的方法
所以我有一个文本文件Pythonic从文本文件导入多个词典的方法,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,所以我有一个文本文件 question_one = {question:"what is 2+2", answer: "4", fake1: "5"} question_two = {question:"what is the meaning of life?", answer:"pizza", fake:"42"} 我怎样才能导入这些词典,以便像这样使用它们 print(question_one["question"]) print(question_two["question"]) 所以
question_one = {question:"what is 2+2", answer: "4", fake1: "5"}
question_two = {question:"what is the meaning of life?", answer:"pizza", fake:"42"}
我怎样才能导入这些词典,以便像这样使用它们
print(question_one["question"])
print(question_two["question"])
所以结果会是
what is 2+2
what is the meaning of life?
我想这样,我可以添加问题到一个文本文件内的程序,然后保存他们,如果我添加更多,如果这是可能的另一种方式,请让我知道 如果您只想序列化数据,则需要使用或exec
将执行所有Python代码,这可能是一个严重的安全问题。pickle
速度更快,并且是为Python量身定做的,而json
几乎可以被任何编程语言读写,并且仍然是相当人性化的可读和可编辑的
现在,回答您提出的问题(您可能不想这样做):
你可以用
此函数支持动态执行Python代码。对象必须
可以是字符串或代码对象。如果是字符串,则字符串为
解析为一组Python语句,然后执行(除非
出现语法错误)
即
exec(open('data.txt','r').read())
另一种方法是(ab)使用import
,假设您的文件名为data.py
:
import data
data.question_one['question']
这显然不是import
的目的。。。我在过去曾经“使用”过这样的导入,并对此感到遗憾(这里有许多警告,我将把它作为练习留给读者去思考它们可能是什么)
警告这两个语句都类似于语句,使用时应小心,将执行data.txt
中的任何Python代码,这可能有潜在危险。请确保您信任传递给exec()
的任何内容的源代码,如果您只想序列化数据(而不是运行Python代码本身),请不要使用它。如果您只想序列化数据,请使用或exec
将执行所有Python代码,这可能是一个严重的安全问题。pickle
速度更快,并且是为Python量身定做的,而json
几乎可以被任何编程语言读写,并且仍然是相当人性化的可读和可编辑的
现在,回答您提出的问题(您可能不想这样做):
你可以用
此函数支持动态执行Python代码。对象必须
可以是字符串或代码对象。如果是字符串,则字符串为
解析为一组Python语句,然后执行(除非
出现语法错误)
即
exec(open('data.txt','r').read())
另一种方法是(ab)使用import
,假设您的文件名为data.py
:
import data
data.question_one['question']
这显然不是import
的目的。。。我在过去曾经“使用”过这样的导入,并对此感到遗憾(这里有许多警告,我将把它作为练习留给读者去思考它们可能是什么)
警告这两个语句都类似于语句,使用时应小心,将执行
data.txt
中的任何Python代码,这可能有潜在危险。请确保您信任传递给exec()
的任何内容的源代码,如果您只想序列化数据(而不是运行Python代码),请不要使用它。最简单的方法是将您的问题存储到JSON文件中,如图所示
下面是一个例子:
[
{
“问题”:“什么是2+2”,
“答复”:“4”,
“伪造1”:“5”
},
{
“问题”:“生命的意义是什么?”,
“答案”:“比萨饼”,
“赝品1”:“42”
}
]
导入json
将open('questions.json')作为f:
questions=json.load(f)
有关问题:
打印(问题['question'])
您可以在中阅读更多关于JSON模块的信息。最简单的方法是将问题存储到JSON文件中,如所示 下面是一个例子:
[
{
“问题”:“什么是2+2”,
“答复”:“4”,
“伪造1”:“5”
},
{
“问题”:“生命的意义是什么?”,
“答案”:“比萨饼”,
“赝品1”:“42”
}
]
导入json
将open('questions.json')作为f:
questions=json.load(f)
有关问题:
打印(问题['question'])
您可以在中阅读更多关于JSON模块的信息。您可以将JSON对象存储到一个文件中:导入这些对象要容易得多,因为您可以迭代这些问题。您是否尝试过做任何事情?啊,我还没有听说过如何使用JSON对象,我现在来看看,你可以将一个json对象存储到一个文件中:导入这些对象要容易得多,因为你只需迭代这些问题。你有没有尝试过做任何事情?啊,我还没有听说过如何使用json对象来实现这一点,我现在来看看,我认为在有很多其他选择的情况下,建议
exec
,是不负责任的,尤其是json
。即使是csv
也可以。第二种方法的注意事项是什么?我正在用python代码制作我的配置文件,并按照你说的那样加载它们…@2rs2ts谢谢你的反馈。我认为这将取决于OP到底想做什么;您可以在exec()
中执行if
s等操作。我(有效)使用了exec()
。。。我包括了强制性的警告,但我会说得更有力一些。我认为在有很多其他选择的情况下,特别是在json上,建议exec
,是不负责任的。即使是csv
也可以。第二种方法的注意事项是什么?我正在用python代码制作我的配置文件,并按照你说的那样加载它们…@2rs2ts谢谢你的反馈。我认为这将取决于OP到底想做什么;如果s和w,则可以执行