web-dev-qa-db-fra.com

comment enregistrer la sortie d'une cellule dans le cahier iPython?

Je voudrais pouvoir enregistrer la sortie TEXT d'un bloc-notes iPython cellule dans un fichier sur le disque.

J'ai 2 exigences/demandes supplémentaires:

  • être en mesure de relancer la cellule et d'écraser ma sortie avec ce qui est le plus récent.
  • affiche également la sortie dans le bloc-notes.

J'ai compris comment utiliser la magie %%capture Pour une sauvegarde de base de la cellule d'un bloc-notes iPython dans un fichier, mais cela ne semble pas assez flexible: il continue de s'ajouter à chaque fois que je réexécute la cellule et je ne peux pas le faire afficher dans la même cellule.

Voici ce que j'ai jusqu'à présent:

%%capture cap --no-stderr
print 'stuff'
with open('output.txt', 'w') as f:
    f.write(cap.stdout)

# clear the cap by deleting the variable here?
# del cap 

Lorsque j'essaie de mettre cap.show() après l'écriture, il ne semble pas s'afficher. Au lieu de cela, il place deux fois la sortie dans la variable cap.

20
pocketfullofcheese

Vous avez une faute de frappe, il manque d dans cap.stout. Il devrait être cap.stdout J'ai testé ce qui suit et cela a bien fonctionné. cap.show() a également imprimé "stuff" et relancé la cellule a écrasé le fichier.

%%capture cap --no-stderr
print 'stuff'
with open('output.txt', 'w') as f:
    f.write(cap.stdout)
15
Amit