我有一个.txt文件,其中包含:
diccionario = {'1':"whatever", '2':54}
我想以这样一种方式读取程序内部的那个文件;diccionario";在该程序中创建具有所需值的。
我试过这样使用exec()
,但它不起作用。
exec(open("file.txt","r").read())
提前谢谢。
如果使用
exec
运行代码,则可以像访问任何常规变量一样访问代码中定义的变量:
code = "variable = 'Hello, world!'"
exec(code)
print(variable)
该输出:
Hello, world!
以上仅适用于repl环境。不幸的是,在repl之外是不可能的。好消息是,您可以实现相同的功能。除了代码之外,exec
还采用了另外两个参数:globals
和locals
。它们分别表示所有全局定义的变量和绑定到局部作用域的变量。在代码执行期间,这些值将用作全局和本地作用域。它们的默认值是globals()
和locals()
,因此exec(code, globals(), locals())
与exec(code)
相同。
通常情况下,您不能修改locals()
,因此无法将变量添加到本地作用域。但是,可以添加全局变量:
code = "global variable; variable = 'Hello, world!'"
exec(code)
print(variable)
缺点是必须将变量声明为全局变量。如果你不能做到这一点,还有最后一个选择:
code = "variable = 'Hello, world!'"
exec_locals = { }
exec(code, globals(), exec_locals)
print(exec_locals)
由此产生:{ 'variable': 'Hello, world!' }
使用它,您可以访问code
中定义的局部变量