2017-08-08 4 views
1

Je suis un débutant en Jupyter. J'ai un Python programme qui démarre mon ordinateur portable en utilisant le nbformat execute API.Passer les arguments à jupyter portable a commencé avec nbformat

Cela fonctionne très bien, mais il y a une chose que je n'ai pas réussi à comprendre; Comment puis-je transmettre des données de mon programme au bloc-notes que je suis sur le point d'exécuter?

Pour être complet est ici le code que j'utilise pour exécuter le bloc-notes:

import nbformat 
from nbconvert.preprocessors import ExecutePreprocessor 

class NotebookExecutor: 
    def __init__(self, name, base_path, notebook_filename_in, notebook_filename_out, timeout=-1): 
     self.name = name 
     if base_path.endswith('/') is False: 
      base_path = base_path + '/' 
     self.base_path = base_path 
     self.notebook_filename_in = notebook_filename_in 
     self.notebook_filename_out = notebook_filename_out 
     self.timeout = timeout 

    def run(self): 
     print("Running notebook '" + self.name + "'") 
     nb = nbformat.read(open(self.base_path + self.notebook_filename_in), as_version=4) 
     ep = ExecutePreprocessor(timeout=self.timeout, kernel_name='python3', allow_errors=True) 
     try: 
      ep.preprocess(nb, {'metadata': {'path': self.base_path}}) 
     except CellExecutionError: 
      msg = 'Error executing the notebook "%s".\n\n' % self.notebook_filename_in 
      msg += 'See notebook "%s" for the traceback.' % self.notebook_filename_out 
      print(msg) 
     # raise 
     finally: 
      nbformat.write(nb, open(self.base_path + self.notebook_filename_out, mode='wt')) 

ne = NotebookExecutor('Test', '/my/path', 'MyBook.ipynb', 'MyBook_out.ipynb') 
ne.run() 

Répondre

0

Je recommande d'utiliser papermill, je ne sais pas si cela va vous aider à résoudre votre problème.

https://github.com/nteract/papermill

Je peux l'utiliser pour boucler dans mon carnet de notes avec des paramètres différents.