Use context manager for reading addon headers

This commit is contained in:
Campbell Barton 2015-06-08 21:21:54 +10:00
parent 07d51141ae
commit d63615272c

View File

@ -80,39 +80,37 @@ def modules_refresh(module_cache=addons_fake_modules):
print("Error opening file %r: %s" % (mod_path, e)) print("Error opening file %r: %s" % (mod_path, e))
return None return None
if speedy: with file_mod:
lines = [] if speedy:
line_iter = iter(file_mod) lines = []
l = "" line_iter = iter(file_mod)
while not l.startswith("bl_info"): l = ""
try: while not l.startswith("bl_info"):
l = line_iter.readline() try:
except UnicodeDecodeError as e: l = line_iter.readline()
if not error_encoding: except UnicodeDecodeError as e:
error_encoding = True if not error_encoding:
print("Error reading file as UTF-8:", mod_path, e) error_encoding = True
file_mod.close() print("Error reading file as UTF-8:", mod_path, e)
return None return None
if len(l) == 0: if len(l) == 0:
break break
while l.rstrip(): while l.rstrip():
lines.append(l) lines.append(l)
try: try:
l = line_iter.readline() l = line_iter.readline()
except UnicodeDecodeError as e: except UnicodeDecodeError as e:
if not error_encoding: if not error_encoding:
error_encoding = True error_encoding = True
print("Error reading file as UTF-8:", mod_path, e) print("Error reading file as UTF-8:", mod_path, e)
file_mod.close() return None
return None
data = "".join(lines) data = "".join(lines)
else: else:
data = file_mod.read() data = file_mod.read()
del file_mod
file_mod.close()
try: try:
ast_data = ast.parse(data, filename=mod_path) ast_data = ast.parse(data, filename=mod_path)