我知道这似乎是一个常见的错误,但我没有看到我的案件的答案。在
UnboundLocalError: local variable '
tfstate_dict
' referenced before assignment
#!/usr/bin/env python
import json
def main():
get_sfleet_id()
def get_sfleet_id():
try:
f=open("terraform_remote.tfstate", "r")
contents =f.read()
tfstate_dict = json.load(contents)
except:
print("error loading %s" % f)
print(contents)
print(tfstate_dict)
if __name__ == '__main__': main()
正如我在评论中所写的,
tfstate_dict
在退出try
块之前不会存在。但这并不是说它适用于前面的所有代码;它只适用于tfstate_dict
,因为它恰好是最后一行。在这很容易用以下方法进行测试:
您应该看到}都已定义并且可以访问(取决于您如何运行此代码,}的存在并不能保证{}的存在。在
'a'
和{locals()
中也可能有很多内容)。因此,'a'
和{当前异常处理有两个问题:
try
块中可能有太多事情要按您当前的方式处理。如果找不到文件,此代码将失败,但您不一定知道发生了这种情况。如果您的代码最初只在tfstate_dict = json.load(contents)
上失败,那么您现在就在绞尽脑汁,为什么突然在print(contents)
上得到一个NameError
。在except
来捕捉这些问题。您至少需要使用except Exception as e:
,这也允许您打印e
。在下面是一个假设的情况,您处理不存在的文件,并尝试解析JSON。在
^{pr2}$相关问题 更多 >
编程相关推荐