我想知道是否有一种方法可以将字典输出到文件中,就像它被定义为变量一样?
因此,如果在代码中它看起来像:
dict1 = {01: 'val1', 02: 'val2', 03: 'val3'}
文件的内容看起来是一样的吗?
所以文件包含:
dict1 = {01: 'val1', 02: 'val2', 03: 'val3'}
我听说过pickle
和JSON,但理想情况下我希望能够从模块中导入它们,即
from some_module import some_dict
这可能吗?
答案 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。