https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools
上記サイトで「process.py」をコンパイルする際にエラーが発生しました。
python tools/process.py --input_dir data --operation resize --output_dir data2/resize
data/0.jpg -> data2/resize/0.png
Traceback (most recent call last):
File "tools/process.py", line 235, in <module>
main()
File "tools/process.py", line 167, in main
src = load(src_path)
File "tools/process.py", line 113, in load
contents = open(path).read()
File"/home/user/anaconda3/envs/tensorflow_2/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
エラーの原因は何ですか? Python のバージョンは 3.5.2 です。
ベストアンサー1
Python はバイト配列 ( bytes
UTF-8 でエンコードされた文字列であると想定される) を Unicode 文字列 ( str
) に変換しようとします。このプロセスは、もちろん UTF-8 ルールに従ったデコードです。これを試みると、UTF-8 でエンコードされた文字列では許可されていないバイト シーケンス (つまり、位置 0 の 0xff) に遭遇します。
確認できるコードが提供されなかったため、残りについては推測することしかできませんでした。
スタック トレースから、トリガーとなるアクションはファイル ( contents = open(path).read()
) からの読み取りであると推測できます。これを次のように再コーディングすることを提案します。
with open(path, 'rb') as f:
contents = f.read()
b
のモード指定子では、ファイルopen()
はバイナリとして扱われる必要があると指定されているため、contents
のままになりますbytes
。この方法ではデコードの試行は行われません。