
[code]

    import sys, io
    
    # UTF8にエンコード
    sys.stdout = io.TextIOWrapper(sys.stdout, encoding='utf-8')
    
    print("hello")
    
[/code]

上記のコードを実行したところ、

[code]

    UnsupportedOperation                      Traceback (most recent call last)
    <ipython-input-4-7af1dd44dff7> in <module>()
         21     s.decompose()
         22 text = ' '.join(soup.stripped_strings)
    ---> 23 print(text)
    
    UnsupportedOperation: not writable
    
[/code]

というエラーが出てしまいました。原因が不明のため、ご教授お願いします。jupyternotebookで実行しています。


CC BY-SA 3.0
2018-04-02T06:45:13.283
42866
2018-04-03T03:36:20.313
2018-04-03T03:36:20.313
3054
27714
question
python jupyter-notebook
Jupyter Notebook の sys.stdout を io.TextIOWrapper でラップできない


jupyter notebookを使用している場合、出力先はipythonになります。

[code]

    import sys, io
    sys.stdout
    
[/code]

上のコードを実行すると

[code]

    <ipykernel.iostream.OutStream at 0xXXXXXXXXXXXX>
    
[/code]

というようになります。

jupyter notebookへの出力でコード変換をするとすれば、下のようなコードになると思うのですが

[code]

    sys.stdout = ipykernel.iostream.OutStream(encoding='utf-8')
    
[/code]

以下のようなエラーになってしまいます。

[code]

    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-20-90d17bbb039b> in <module>()
    ----> 1 sys.stdout = ipykernel.iostream.OutStream(encoding='utf-8')
    
    TypeError: __init__() got an unexpected keyword argument 'encoding'
    
[/code]

最近は、UTF-8固定の時代になってきているので、UTF8にエンコードすることは忘れてもいいのではないでしょうか。


CC BY-SA 3.0
2018-04-03T03:19:44.420
42880
2018-04-03T03:19:44.420
15171
42866
answer