Я использую следующее в Python2.x;csv module python3.1
import csv
f = open('test.csv', 'wb')
writer = csv.writer(f)
writer.writerow((fpath, md5sum, size)) # <str>, <str>, <int>
Это работает без проблем. Однако, когда я запускаю это в Python3, я получаю TypeError.
writer.writerow((fpath, md5sum, size))
TypeError: write() argument 1 must be bytes or buffer, not str
Конечно, выписывая данные в файл в открытом в недвоичном режиме будет делать трюк, но мне нравится, как Unicode обрабатывается в PY3 и хочу конкретно кодировать данные перед записью в файл и декодировать его при чтении из него.
Как решить эту проблему?
Итак, где именно вы декодируете/кодируете данные и как это связано с двоичным режимом? – SilentGhost
Несомненно, точка разделения unicode/bytes состоит в том, что вы * не * должны иметь дело с кодированием/расшифровкой самостоятельно? Если вы хотите использовать другой кодек по умолчанию, см. Ответ Ignacio. –
Не могли бы вы разъяснить, что вам не нужно иметь дело с кодировкой? С чем связано разделение unicode/bytes? –