Module lib.tools.useful
Miscellaneous utility functions
Expand source code
# Distributed under Pycameresp License
# Copyright (c) 2023 Remi BERTHOLET
# pylint:disable=consider-using-f-string
""" Miscellaneous utility functions """
import sys
import io
import tools.logger
import tools.filesystem
def run(filename):
""" Import and execute python file """
result = None
path, file = tools.filesystem.split(filename)
module_name, _ = tools.filesystem.splitext(file)
if path not in sys.path:
sys.path.append(path)
try:
del sys.modules[module_name]
except:
pass
try:
exec("import %s"%module_name)
for fct in dir(sys.modules[module_name]):
if fct == "main":
print("Execute main function")
sys.modules[module_name].main()
break
except Exception as err:
if tools.filesystem.ismicropython():
out = io.StringIO()
# pylint: disable=no-member
sys.print_exception(err, out)
try:
line_err = out.getvalue().split("\n")[-3]
result = int((line_err.split(',')[1]).split(" ")[-1])
except:
pass
tools.logger.syslog(err)
except KeyboardInterrupt as err:
tools.logger.syslog(err)
return result
Functions
def run(filename)-
Import and execute python file
Expand source code
def run(filename): """ Import and execute python file """ result = None path, file = tools.filesystem.split(filename) module_name, _ = tools.filesystem.splitext(file) if path not in sys.path: sys.path.append(path) try: del sys.modules[module_name] except: pass try: exec("import %s"%module_name) for fct in dir(sys.modules[module_name]): if fct == "main": print("Execute main function") sys.modules[module_name].main() break except Exception as err: if tools.filesystem.ismicropython(): out = io.StringIO() # pylint: disable=no-member sys.print_exception(err, out) try: line_err = out.getvalue().split("\n")[-3] result = int((line_err.split(',')[1]).split(" ")[-1]) except: pass tools.logger.syslog(err) except KeyboardInterrupt as err: tools.logger.syslog(err) return result