我有一个config.py脚本,其中包含前导码信息。我可以使用execfile()函数读取配置文件的内容。
execfile("config.py")
print PREAMBLE
>>> "ABC"
但是,当在方法中调用execfile()时,我有一个错误。
def a():
execfile("config.py")
print PREAMBLE
a()
>>> NameError: "global name 'PREAMBLE' is not defined"
怎么了,怎么解决这个问题?
最佳答案
您需要将全局字典传递到execfile
才能获得相同的结果:
def a():
execfile("config.py",globals())
print PREAMBLE
a()
>>> "some string"
如果不想污染全局命名空间,可以传递本地词典并使用它:
def a():
config = dict()
execfile('/tmp/file',config)
print config['PREAMBLE']
a()
>>> "some string"
作为参考,在上述两种情况下,
/tmp/file
都包含PREAMBLE = "some string"
。