def run(expressions, args, namespace={}):
func = exec if args.exec else eval
for expr in expressions:
if args.exception_handler:
exception, handler = tuple(
i.strip() for i in
args.exception_handler.split(':', maxsplit=1))
try:
value = func(expr, namespace)
except __builtins__[exception]:
try:
value = func(handler, namespace)
except Exception as e:
value = handle_errors(e, args)
continue
except Exception as e:
value = handle_errors(e, args)
continue
else:
try:
value = func(expr, namespace)
except Exception as e:
value = handle_errors(e, args)
continue
if not args.exec:
namespace.update(x=value)
if not (args.quiet or args.exec):
if args.join is not None and isinstance(value, collections.Iterable):
print(ast.literal_eval("'''" + args.join.replace("'", r"\'") +
"'''").join(map(str, value)))
elif value is None:
pass
elif isinstance(value, collections.Iterator):
for i in value:
print_obj(i)
else:
indent = None if (args.loop or args.force_oneline_json) else 2
print_obj(value, indent)
评论列表
文章目录