$ cat Test.py
#!/usr/bin/env python3.2
import sys
for sLine in sys.stdin:
print(sLine)
という python3 スクリプトがあって、標準入力から SHIFT-JIS のテキストを流し込むと
$ echo 'あいうえお' | nkf -s | ./Test.py
Traceback (most recent call last):
File "./Test.py", line 5, in
for sLine in sys.stdin:
File "/usr/lib/python3.2/codecs.py", line 300, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 0: invalid start byte
というように、入力を UTF-8 で処理しようとしてエラーになります。
$ cat Test.py
#!/usr/bin/env python3.2
import sys
import io
for sLine in io.TextIOWrapper(sys.stdin.buffer, 'shift-jis'):
print(sLine)
というように io.TextIOWrapper を使ったら
$ echo 'あいうえお' | nkf -s | ./Test.py
あいうえお
うまく処理できました。
0 件のコメント:
コメントを投稿