

下記の関数により複数のzipファイルを一度に解凍したのですが、中身が全て同じ「XBRLData」という一番上の同じフォルダに展開されてしまいます。  
本当はそれぞれのzipフォルダ単位で展開されて欲しいのでどこを変更すべきかご教授いただきたい。

[code]

    def open_zip():
    
        os.chdir(r"C:\Users\osamu\Desktop\VS_Code\TDNet\yanoshin_API\original\data_original\\")
        zip_fs = glob.glob('*.zip') 
        
        for f in zip_fs:
            with zipfile.ZipFile(f) as zip_f:
                zip_f.extractall()
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/LU57p.png)](https://i.stack.imgur.com/LU57p.png)


CC BY-SA 4.0
2022-07-06T12:13:55.670
89792
2022-07-06T13:49:38.367
2022-07-06T12:33:26.717
3060
51310
question
python python3
複数のzipフォルダをそれぞれのフォルダ毎に解凍したい


こちらの記事や仕様のドキュメントを参考に、今は解凍時に何も指定していない(`zip_f.extractall()`)ですが、解凍先のフォルダ名を指定してみてはどうでしょう？  
[ゼロからはじめるPython 第74回
PythonでZIP解凍すればファイル100個あっても余裕な件](https://www.mapion.co.jp/news/column/cobs2223961-1-all/)

> 以下は「test.zip」というZIPファイルを解凍して「test」というフォルダ以下に展開する例だ。
[code]

>     import zipfile
>     with zipfile.ZipFile('test.zip', 'r')as f:
>         f.extractall('./test') #### 元記事はインデントが無いように見えるので修正
>  
[/code]

>
> 上記のプログラムを「test-unzip.py」という名前で保存したら、Pythonの実行環境のIDLEを起動しよう。IDLEのメニュー[File >
> Open]でプログラムを読み込んで実行してみよう。うまく実行されると、testというフォルダ以下にZIPファイルの内容が解凍される。

[ZipFile.extractall(path=None, members=None,
pwd=None)](https://docs.python.org/ja/3/library/zipfile.html#zipfile.ZipFile.extractall)

> すべてのメンバをアーカイブから現在の作業ディレクトリに展開します。path は展開先のディレクトリを指定します。

こちらは`extractall()`ではなく`extract()`の記事ですが同様でしょう。  
[How to unzip specific folder from a .zip with
Python](https://stackoverflow.com/q/13765486/9014308)

* * *

あるいは、階層は今のままにしたいのであれば、解凍した直後に`XBRLData`フォルダを`os.rename()`で名前を変更してみてはどうでしょう？  
[ファイル名またはディレクトリ名を変更する](https://www.javadrive.jp/python/file/index16.html)  
[os.rename(src, dst, *, src_dir_fd=None,
dst_dir_fd=None)](https://docs.python.org/ja/3/library/os.html#os.rename)

* * *

いずれにせよ、おそらく対象とするフォルダ名は、ZipFileのファイル名から拡張子を取り除いたものか、それをベースに何かしらの処理をしたものになりそうですね。  
[PurePath.stem](https://docs.python.org/ja/3/library/pathlib.html#pathlib.PurePath.stem)

> パス要素の末尾から拡張子を除いたものになります:


CC BY-SA 4.0
2022-07-06T12:43:30.000
89793
2022-07-06T13:49:38.367
2022-07-06T13:49:38.367
26370
26370
89792
answer