Sep 25, 2016 21:40
Вот есть кусочек кода:
import sys, struct
datafile = open(sys.argv[1], "r")
img = datafile.read()
Аргументом скрипту передается имя файла с hexdump-ом неважно чего. Просто маленький hexdump размером 242 байта. Питон 2.7 нормально воспринимает конструкцию, открывает и читает файл, а потом обрабатывает по желанию писателя скрипта. А вот третий питон плюется ядом:
Traceback (most recent call last):
File "unpack_modified.py", line 14, in
img = datafile.read()
File "/usr/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 0xf7 in position 4: invalid start byte
Вот зачем и почему неестественный интеллект хочет читать hexdump как набор unicode-символов? Я его не просила считать входной файл как набор unicode. И зачем так усложнять поведение по умолчанию, если я просто хочу открыть файл для чтения.