完全按照变量中的定义输出字典到文件

时间:2016-04-28 08:29:25

标签: python dictionary

我想知道是否有一种方法可以将字典输出到文件中,就像它被定义为变量一样?

因此,如果在代码中它看起来像:

dict1 = {01: 'val1', 02: 'val2', 03: 'val3'}

文件的内容看起来是一样的吗?

所以文件包含:

dict1 = {01: 'val1', 02: 'val2', 03: 'val3'}

我听说过pickle和JSON,但理想情况下我希望能够从模块中导入它们,即

from some_module import some_dict

这可能吗?

3 个答案:

答案 0 :(得分:4)

只需使用内置的repr(...)函数将对象转换为字符串,使得结果字符串是一个有效的文字,您可以使用它来重新创建对象。

它调用其参数的__repr__()方法,该方法至少为最常见的基本数据类型生成有效的文字。但它对大多数其他对象不起作用:

dict1 = {1: 'val1', 2: 'val2', 3: 'val3'}
literal = repr(dict1)

print(literal)
# Output: {1: 'val1', 2: 'val2', 3: 'val3'}

现在您可以将其存储在Python文件中:

with open("my_dict.py", "w") as f:
    print("dict2 = " + literal, file=f)

现在可以从同一文件夹中的其他Python脚本作为模块导入:

import my_dict
print(my_dict.dict2[2])
# Output: val2

或者,如果您不想每次都使用模块名称,请使用from导入它:

from my_dict import dict2
print(dict2[2])
# Output: val2

答案 1 :(得分:0)

我认为这是不可能的。导入用于导入模块,而不是文件。您需要阅读并处理该文件才能使其正常工作。您可以将dict写入文件,例如:

output = "dict1 = "+str(dict1) 
f.write(output)

答案 2 :(得分:0)

您可以使用globals()函数来实现对象名称,该函数会显示模块当前状态下的字典。但这不是一个好的场景,你应该使用数据的序列化,也许是通过JSON。