1. ホーム

Python がエラー TypeError: write() 引数はバイトではなく str でなければならない

2022-02-18 18:17:13

まだ『Machine Learning in Action』の決定木の章では、決定木ストアの学習中にTypeError: write() argument must be str, not bytesというエラーが最初に表示され、エラーメッセージには、write() 関数の引数はbytesではなくstrでなければならない、と書かれていました。私は理解できない、エラーがプロンプトが表示されたソースコードを見て、pickle.dump(inputTree,fw)この1文のコンパイルエラー、次に我々は最初のpickle.dump()の使用を見てください。


最後の文からわかるように、私たちの問題は変数fwにあります。つまり、fw = open(filename,'w')という文に不具合があるのです。つまり、変数fwの型はバイトであるべきなので、'w'を'wb'に変更し、変更後に正常にコンパイルすることができます、同じ原理で、プロンプト UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 0: illegal マルチバイト配列エラーは、以前に保存したtxtファイルがバイナリーで書かれているのでバイナリーで読み込むべきである、すなわち、。 つまり、読み込んだファイルの fr = open(filename) は fr = open(filename, 'rb') に変更する必要があります。テスト中です。


成功!