#! /bin/env python3 # encoding: utf-8 import imp import os # -------------------------------------------------- def import_module(path): """ Imports a python file as a module. The path can be relative or absolute. Based on the work of Yuval Greenfield released into the public domain. """ # remove the .py suffix mod_dn = os.path.dirname(path) mod_fn = os.path.basename(path) if mod_fn.endswith(".py"): mod_name = mod_fn[:-3] else: # packages for example mod_name = mod_fn fd = None try: data = imp.find_module(mod_name, [mod_dn]) module = imp.load_module(mod_name, *data) fd = data[0] finally: if fd is not None: fd.close() return module # -------------------------------------------------- def batch_gen(data, batch_size): """ Split data (a sequence) into sequences batch_size elements long. """ for i in range(0, len(data), batch_size): yield data[i:i+batch_size] # -------------------------------------------------- def console(environment, tab_completion=False): """ Opens up a Python console. environment is a dictionary typically returned by locals() or similar tab_completion enables completion of object names using TAB, however note that this will make pasting formatted snippets of code difficult """ import code, readline, rlcompleter readline.parse_and_bind("tab: complete") c = code.InteractiveConsole(environment) c.interact(banner="")