我正在从大量文件中解析#data1和#data2。有些文件虽然没有,但是当我返回data1时,data2会导致:
UnboundLocalError: local variable 'data2' referenced before assignment
我看了几个其他的问题,我认为像try / except看起来很有希望,但如果其中一个值不存在,我不希望它抛出错误。
我尝试了各种if语句,但得到了相同的UboundLocalError。
if data1 and data2:
return data1, data2
在尝试返回之前,是否有一种简单的方法可以检查该值是否存在?
data1, data2 = parse_file(filename)
def parse_file(sample):
for line in open(sample, 'r'):
if line.startswith('#data1'):
#Clean up the value
data1 = line.strip().split('=')[-1]
elif line.startswith('#data2'):
#Clean up the value
data2 = line.strip().split('=')[-1]
#Go to next line if it doesn't have either
else: continue
return data1, data2
答案 0 :(得分:3)
data1
和data2
仅根据您的行开头定义。如果您的行从未以'#data2'
开头,则data2
永远不会被定义。
您可以将它们初始化为None
以消除错误:
def parse_file(sample):
for line in open(sample, 'r'):
data1, data2 = None, None # Initialize them here if you want them reset for every iteration
# do stuff