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,则可以执行