'Cannot open file in subdirectory with ZipFile

For whatever reason i cannot open or access the file in this subdirectory. I need to be able to open and read files within subdirectories of a zipped folder. Here is my code.

import zipfile
import os

for root, dirs, files in os.walk('Z:\\STAR'):
    for name in files:
        if '.zip' in name:
            try:
                zipt=zipfile.ZipFile(os.path.join(root,name),'r')
                dirlist=zipfile.ZipFile.namelist(zipt)
                for item in dirlist:
                    if 'Usb' in item:
                        input(item)
                        with zipt.open(item,'r') as f:
                            a=f.readlines()
                            input(a[0])
                    else:pass
            except Exception as e:
                print('passed trc file {}{} because of {}'.format(root,name,e))
        else:pass

This code currently gives me the error:

File "StarMe_tracer2.py", line 133, in tracer
    if 'er99' in line:
TypeError: a bytes-like object is required, not 'str'


Solution 1:[1]

The content read from the file object opened with ZipFile.open is bytes rather than a string, so testing if a string 'er99' is in a line of bytes would fail with a TypeError.

Instead, you can either decode the line before you test:

if 'er99' in line.decode():

or convert the bytes stream to a text stream with io.TextIOWrapper:

import io

...

with io.TextIOWrapper(zipt.open(item,'r'), encoding='utf-8') as f:

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1