IPython: redirection de la sortie d'un script Python dans un fichier (comme bash >)
J'ai un script Python que j'ai envie de courir dans IPython. Je veux rediriger (écrire) la sortie vers un fichier similaires à:
python my_script.py > my_output.txt
Comment dois-je faire lorsque je lance le script dans IPython, c'est à dire comme execfile('my_script.py')
Il y a un les plus âgés de la page décrivant une fonction qui peut être écrit à le faire, mais je crois qu'il y a maintenant un moyen intégré à faire ce que je ne peux pas trouver.
- ressemble fonctionnalité manquante, il devrait être plus simple que de réponses ci-dessous pour être pratique
Vous devez vous connecter pour publier un commentaire.
IPython dispose de son propre gestionnaire de contexte pour la capture de la sortie standard stdout/err, mais il n'est pas redirigé vers des fichiers, il redirige vers un objet:
Et cette fonctionnalité est exposée dans un
%%capture
cellules de la magie, comme illustré dans la La cellule de Magies exemple ordinateur portable.C'est un simple gestionnaire de contexte, de sorte que vous pouvez écrire votre propre version qui pourrait rediriger vers des fichiers:
qui vous invoquent avec:
__init__
méthode et de les transmettre à ouvrir, plutôt que de coder en dur le mode d'écriture.L'écriture d'un script semble exagéré pour moi, je voulais juste quelque chose de simple à regarder beaucoup de texte contenue dans une variable tout en travaillant dans IPython. C'est ce qui a fonctionné pour moi:
%store VARIABLE >> file.txt
(ajoute)%store VARIABLE > file.txt
(écrase)ERROR:root:Line magic function '%store' not found.
lorsque l'exécuter à partir dePyDev console: using IPython 6.0.0
. Le même appel àipython3
fonctionne bien.Il y a le hacky façon de les écraser
sys.stdout
etsys.stderr
avec un fichier objet, mais ce n'est vraiment pas une bonne façon d'aller à ce sujet. Vraiment, si vous voulez contrôler où la sortie passe à l'intérieur de python, vous avez besoin pour mettre en œuvre une sorte d'enregistrement et/ou de sortie du système de traitement que vous pouvez configurer via la ligne de commande ou les arguments de la fonction au lieu d'utiliserprint
consolidés.Il semble que beaucoup de code....
Ma solution.
rediriger la sortie de ipython script dans un fichier csv ou un fichier texte comme sqlplus bobine
étonnant qu'il y est un moyen facile comme oracle sqlplus bobine de commande..?