2017-08-11 2 views
0

J'ai une question sur la façon de nettoyer par programme \ clean la sortie de toutes les cellules dans mon cahier Jupyter après le chargement du cahier (quand le noyau est prêt), et avant à l'utilisateur, moi-même, en exécutant manuellement le code. Fondamentalement, je voudrais que le cahier soit propre quand il est chargé, et je voudrais le faire automatiquement.Jupyter: sortie par programmation claire de toutes les cellules lorsque le noyau est prêt

Comment puis-je imposer une commande telle que clear_output() d'une seule cellule d'initialisation à toutes les autres cellules du bloc-notes?

Merci.

+0

Pouvez-vous retirer la demande d'un tutoriel sur IPython via Javascript? Si vous partez, votre question sera très probablement fermée car vous n'êtes pas censé demander des tutoriels sur ce site. –

+0

Supprimé - merci. – Stas

Répondre

1

Pour un portable de confiance (voir http://jupyter-notebook.readthedocs.io/en/stable/security.html#Our-security-model pour plus de détails sur les ordinateurs portables de confiance/non fiables, mais en bref, à cet effet, le bit correspondant est que tout vous avez créé sur votre machine devrait faire confiance déjà), vous pouvez utiliser une cellule javascript au début avec quelque chose comme:

require(['base/js/namespace', 'base/js/events'], 
function (Jupyter, events) { 
    // save a reference to the cell we're currently executing inside of, 
    // to avoid clearing it later (which would remove this js) 
    var this_cell = $(element).closest('.cell').data('cell'); 
    function clear_other_cells() { 
     Jupyter.notebook.get_cells().forEach(function (cell) { 
      if (cell.cell_type === 'code' && cell !== this_cell) { 
       cell.clear_output(); 
      } 
      Jupyter.notebook.set_dirty(true); 
     }); 
    } 

    if (Jupyter.notebook._fully_loaded) { 
     // notebook has already been fully loaded, so clear now 
     clear_other_cells(); 
    } 
    // Also clear on any future load 
    // (e.g. when notebook finishes loading, or when a checkpoint is reloaded) 
    events.on('notebook_loaded.Notebook', clear_other_cells); 
}); 

Cela ne fonctionne pas dans un cahier non approuvé, pour lesquels sorties javascript sont assainis, mais si vous créez l'ordinateur portable, il devrait fonctionner ok. Vous pouvez même envelopper le tout dans une extension si vous préférez ne pas avoir la cellule dans tous les cahiers.

<shameless plug> Voir https://github.com/ipython-contrib/jupyter_contrib_nbextensions pour des exemples de nbextensions ou fichier un problème là pour suggérer d'ajouter quelque chose comme ça </shameless plug>