Аргумент TypeError: write() должен быть str, а не байтами (Python 3 vs Python 2)

Приведенный ниже код отлично работает для python 2.7.13

import os
with open('random.bin','w') as f:
    f.write(os.urandom(10))

Но выдает ошибку для python 3 3.6.0 | Anaconda 4.3.0 (64-бит) | (по умолчанию, 23 декабря 2016, 11:57:41) [MSC v.1900 64 бит (AMD64)]

Traceback (последний последний вызов): Файл "C:/Users/hsingh/PycharmProjects/Item3.py", строка 3, в     f.write(os.urandom(10)) ТипError: write() аргумент должен быть str, а не байтами

Любая причина, по которой есть разница в поведении или как это исправить.

+3
31 окт. '17 в 3:06
источник поделиться
1 ответ

В Python 3 имеет значение, открываете ли вы файл в двоичном или текстовом режиме. Просто добавьте флаг b, чтобы сделать его двоичным:

with open('random.bin','wb') as f:

Это также работает в Python 2.

+8
31 окт. '17 в 3:21
источник

Посмотрите другие вопросы по меткам или Задайте вопрос