TypeError: a bytes-like object is required, not 'str' when writing to a file in Python3
Solution 1:
You opened the file in binary mode:
with open(fname, 'rb') as f:
This means that all data read from the file is returned as bytes
objects, not str
. You cannot then use a string in a containment test:
if 'some-pattern' in tmp: continue
You'd have to use a bytes
object to test against tmp
instead:
if b'some-pattern' in tmp: continue
or open the file as a textfile instead by replacing the 'rb'
mode with 'r'
.
Solution 2:
You can encode your string by using .encode()
Example:
'Hello World'.encode()