Добавлена отладочная информация при ошибках чтения файлов

legacy27 3.6.2.1
Mike Hiretsky 5 years ago
parent 09370af405
commit c2a61b950c

@ -782,7 +782,9 @@ def readFile(filename):
with open(filename, 'r') as f:
return f.read()
except (OSError, IOError) as e:
sys.stderr.write("WARNING: file read error, {}\n".format(str(e)))
mod, lno = tools.get_traceback_caller(*sys.exc_info())
sys.stderr.write("WARNING: file read error, {}({}:{})\n".format(
str(e), mod, lno))
sys.stderr.flush()
return ""
@ -811,7 +813,9 @@ def readFileEx(filename, tailbyte=None, headbyte=None, grab=False):
else:
return filterfunc(f.read())
except (OSError, IOError):
sys.stderr.write("WARNING: file read error, {}\n".format(str(e)))
mod, lno = tools.get_traceback_caller(*sys.exc_info())
sys.stderr.write("WARNING: file read error, {}({}:{})\n".format(
str(e), mod, lno))
sys.stderr.flush()
return ""

@ -626,3 +626,24 @@ def get_best_nearest_resolution(preferred_res, support_res, aspect_only=False):
keyfunc = lambda x,y,g, dasp: g -g * dasp
bestRes = max(support_res_int, key=lambda x:keyfunc(*x) )
return "%sx%s" % bestRes[0:2]
def get_traceback_caller(e1, e2, frame):
"""
Получить модуль и строку вызвавшую эту функции с ошибкой
"""
while frame.tb_next:
frame = frame.tb_next
module, part = os.path.split(frame.tb_frame.f_back.f_code.co_filename)
if part.endswith('.py'):
part = part[:-3]
fallbackmod = part
modname = [part]
while module and module != '/' and not module.endswith('site-packages'):
module, part = os.path.split(module)
modname.insert(0, part)
if module.endswith('site-packages'):
modname = ".".join(modname)
else:
modname = fallbackmod
return modname, frame.tb_frame.f_back.f_lineno

Loading…
Cancel
Save