zipfile.ZipFileクラスのopen() メソッドを使うと、中に入っているファイルにアクセスすることができます。 これがzipファイルであった場合、それをさらにzipfile.ZipFile で開けばいいことになります。
その中にさらにzipがあったら...という場合は、再帰的に適用するようにすればいいでしょうね。
コードつきの回答も出ていますから、こちらからも例を出しましょう。
「それがzipの中のzipに使おとしたら、notfoundになりました。」のそれが何を指しているかわからないのですが、
zipf.open(<zipファイル内のファイル名>) とすれば、そのファイルのハンドラが取得できますので、それをさらにzipfile.ZipFile()で開けばいいのです。
(BytesIOを経由しなくても開けます)
以下は、zipファイルの中にさらにzipファイルが入っていても再帰的に表示するようにしたものです。
python
1import zipfile
2import pathlib
3
4def print_zipfile_namelist(infile, prefix=''):
5
6 zipf = zipfile.ZipFile(infile)
7
8 for fname in zipf.namelist():
9 fpath = pathlib.Path(fname)
10 if fpath.suffix == '.zip':
11 print_zipfile_namelist(zipf.open(str(fpath)), prefix=f'{prefix}{fpath.name}:')
12 else:
13 print(f'{prefix}{fpath}')
14
15print_zipfile_namelist('A_Folder.zip')
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。