Coding Ref

TypeError: a bytes-like object is required, not 'str'

TypeError: a bytes-like object is required, not 'str'

To solve the Python "TypeError: a bytes-like object is required, not str", encode the str to bytes, e.g. my_str.encode('utf-8'). The str.encode method returns an encoded version of the string as a bytes object. The default encoding is utf-8.

Here is an example of how the error occurs.

main.py
# 👇️ open file
with open('example.txt', 'rb') as f:
    result = f.readlines()

    # ⛔️ TypeError: a bytes-like object is required, not 'str'
    if 'first line' in result[0]:
        print('success')

We opened the file in binary mode (using the rb mode), so the result list contains bytes objects.

To solve the error, use the encode() method to encode the str into bytes.

main.py
with open('example.txt', 'rb') as f:
result = f.readlines()

    # 👇️ call encode() on the string
    if 'first line'.encode('utf-8') in result[0]:
        # ✅ this runs
        print('success')

Now the values on both sides of the in operator are bytes objects, so the error is resolved.

Note that we could have also decoded the bytes object into a string.

main.py
with open('example.txt', 'rb') as f:
result = f.readlines()

    # ✅ decode bytes into str
    if 'first line' in result[0].decode('utf-8'):
        print('success')

The values on the left and right-hand side of the in operator are of the same type (str).

The bytes.decode method returns a string decoded from the given bytes. The default encoding is utf-8.

You can also use a list comprehension to perform the operation on each element in a list.

main.py
with open('example.txt', 'rb') as f:
    lines = [l.decode('utf-8') for l in f.readlines()]

    if 'first line' in lines[0]:
        print('success')

Conclusion

To solve the Python "TypeError: a bytes-like object is required, not str", encode the str to bytes, e.g. my_str.encode('utf-8'). The str.encode method returns an encoded version of the string as a bytes object. The default encoding is utf-8.

You'll also like

Related tutorials curated for you

    Delete Conda environment

    IndexError: list index out of range

    How to fix: IndentationError expected an indented block in Python

    Flatten a list in Python

    ModuleNotFoundError: No module named 'requests' in Python

    ModuleNotFoundError: No module named 'numpy' in Python

    ModuleNotFoundError: No module named 'pip' in Python

    ModuleNotFoundError: No module named 'pandas' in Python

    TypeError: only integer scalar arrays can be converted to a scalar index

    ModuleNotFoundError: No module named 'matplotlib' in Python

    Convert JSON to CSV in Python

    ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()