在python中使用print()時,raw write()返回無效的長度:OSError: raw write() returned invalid length 254 (should have

寫出一個不是code的bug,很煩惱,解決了挺長時間,都翻到外文來看,不過仍是解決了,只嘗試了一種簡單可觀的方法,但願對你們有用python

我正在使用Django與Keras(tensorflow)來訓練一個模型來識別python中的圖像。在python中使用print()時,raw write()返回無效的長度,git

即便我想把print()註釋掉,也時不時的蹦出來,錯誤以下:github

Traceback (most recent call last):
  File "D:\AI\Python35\lib\site-packages\django\core\handlers\exception.py", line 35, in inner
    response = get_response(request)
  File "D:\AI\Python35\lib\site-packages\django\core\handlers\base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "D:\AI\Python35\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "E:\PyCharmWork\PythonWebApp\ApiPicDjangoSite\PicWeb\views.py", line 94, in trainPic
    bankTrain.Cnn_bank_run(lineData,linefile)
  File "E:\PyCharmWork\PythonWebApp\ApiPicDjangoSite\PicWeb\Cnn_Bank_train.py", line 70, in Cnn_bank_run
    modelTrain.modelTrain_ByType(kwargs[1],X_train,Y_train,X_test,Y_test)
  File "E:\PyCharmWork\PythonWebApp\ApiPicDjangoSite\PicWeb\trainModel_init.py", line 113, in modelTrain_ByType
    verbose=1, validation_data=(kwgs[3], kwgs[4]))
  File "D:\AI\Python35\lib\site-packages\keras\models.py", line 960, in fit
    validation_steps=validation_steps)
  File "D:\AI\Python35\lib\site-packages\keras\engine\training.py", line 1650, in fit
    validation_steps=validation_steps)
  File "D:\AI\Python35\lib\site-packages\keras\engine\training.py", line 1233, in _fit_loop
    callbacks.on_epoch_end(epoch, epoch_logs)
  File "D:\AI\Python35\lib\site-packages\keras\callbacks.py", line 73, in on_epoch_end
    callback.on_epoch_end(epoch, logs)
  File "D:\AI\Python35\lib\site-packages\keras\callbacks.py", line 306, in on_epoch_end
    self.progbar.update(self.seen, self.log_values, force=True)
  File "D:\AI\Python35\lib\site-packages\keras\utils\generic_utils.py", line 369, in update
    sys.stdout.write(info)
OSError: raw write() returned invalid length 254 (should have been between 0 and 127)
錯誤都頗有規律可循:
Error like this: OSError: raw write() returned invalid length
318 (should have been between 0 and 159) OSError: raw write() returned invalid length 8 (should have been between 0 and 4) OSError: raw write() returned invalid length 130(should have been between 0 and 65) Please note: 318=159x2 8=4x2 130=65x2

緣由:可能與最近的Windows 10更新有關。我有版本1709(操做系統版本16299.64),shell

  我認爲這多是unicode字符的返回值(正常長度的兩倍)?django

  我實際上能夠在外部powershell.exe中重現此錯誤,因此這自己不是Code相關的。app

  總的來講,與win10系統、版本有關係,踩中雷區了(本人win10,版本    10.0.16299 版本 16299)oop

  能夠cmd一下,輸入msinfo32,就能看到版本狀況
this

 

解決方案:寫入如下代碼到報錯提示的python的中,寫在開頭spa

事先要看你是否pip  win_unicode_console,沒有,就趕快動手

import
win_unicode_console win_unicode_console.enable()

 以下:操作系統

 

參考:https://github.com/Microsoft/vscode/issues/39149

https://qiita.com/non0/items/4014b81f5a2d232ae22f

https://stackoverflow.com/questions/47356993/oserror-raw-write-returned-invalid-length-when-using-print-in-python

相關文章
相關標籤/搜索