The below code works perfectly for python 2.7.13
import os
with open('random.bin','w') as f:
f.write(os.urandom(10))
But throws error for python 3 3.6.0 |Anaconda 4.3.0 (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)]
Traceback (most recent call last): File "C:/Users/hsingh/PycharmProjects/Item3.py", line 3, in f.write(os.urandom(10)) TypeError: write() argument must be str, not bytes
Any reason why there is difference in behaviour or how to fix this
The Python "TypeError: can only concatenate str (not "bytes") to str" occurs when we try to concatenate a string and a bytes object. To solve the error, decode the bytes object into a string before concatenating the strings.
In Python 3 it makes a difference whether you open the file in binary or text mode. Just add the b
flag to make it binary:
with open('random.bin','wb') as f:
This works in Python 2 too.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With