私はのファイルに私のJupyter Notebook内のいくつかのセルをstdout
にリダイレクトしようとしていましたが、残りのセルはthisでキャンセルします。最初のセルセットからの出力は、それが意図したようにファイルに書き込まれました。キャンセルコマンドsys.stdout = sys.__stdout__
の後のセルの2番目のセットは出力を出さず、何もしないように見えましたが、後でノートブックが起動した端末に着陸していたことがわかりました。Jupyterノートブックからのstdoutリダイレクトが端末に着信しています
それはまったく同じのPythonでPythonインタプリタで完璧に動作します:
(miniconda3-latest) [email protected]:~/Documents/project1 $ python
Python 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016, 12:22:00)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout = open('stdout.txt', 'w')
>>> print("a")
>>> print("a")
>>> print("a")
>>> sys.stdout = sys.__stdout__
>>> print ("b")
b
>>> print ("b")
b
>>> print ("b")
b
>>> # lots of a's are in the file and no b's
Jupyterのノートブックでも同様のアプローチは、端末でこれを与えている:
[W 22:05:34.192 NotebookApp] 404 GET /nbextensions/widgets/notebook/js/extension.js (127.0.0.1) 1.71ms referer=http://localhost:8889/notebooks/test_stdout.ipynb
b
b
b
どのようにこのコードをすることができそれをリセットした後、端末の代わりに通常は出力が流れるセルの下にbが表示されるように適応しましたか?
ありがとうございます。ノートブックで 'old_stdout'のオブジェクトを見てみると、' ' –
cardamom
私はそれに気付かなかったことを認めなければなりません'sys .__ stdout__'も存在していました。私はいつも私の答え(すべての手で行わなければならないCのような言語に慣れなければならない)に記述された方法を使用した。あなたはバックアップしていないことに注意してください。あなたはそれを失うのではなく、_reference_を保存しています。 –