【Python】ZIPファイルを解凍せずに一部のファイルを別の場所に保存する方法
圧縮ファイルの中のファイルを抜き出すためには一旦解凍する必要あるのですが、それだとファイルが複数あったりすると面倒なので解凍せずに目的のファイルだけ抜き出す方法を少尉介します。
今回の例では以前紹介したHistData.comから取得した為替レートの1分足データ(各年ごとのzip)を使います。2014〜2022年の9つのzipファイルとなっていて中身はcsvファイルとtxtファイルの2つで構成されています。今回はこのcsvファイルだけ抜き出し別のフォルダに保存します。
ソースコードはこちらです。テキストファイルなのでバイナリデータからテキストに起こして保存し直しています。バイナリから直接保存する方法があれば画像ファイルも行けると思います。
import zipfile fnames = ['DAT_ASCII_USDJPY_M1_2014.zip', 'DAT_ASCII_USDJPY_M1_2015.zip', 'DAT_ASCII_USDJPY_M1_2016.zip', 'DAT_ASCII_USDJPY_M1_2017.zip', 'DAT_ASCII_USDJPY_M1_2018.zip', 'DAT_ASCII_USDJPY_M1_2019.zip', 'DAT_ASCII_USDJPY_M1_2020.zip', 'DAT_ASCII_USDJPY_M1_2021.zip', 'DAT_ASCII_USDJPY_M1_2022.zip'] for fname in fnames: zip = zipfile.ZipFile(fname, 'r') # ファイルリスト取得 list = zip.infolist() for file in list: #csvファイルがあったら if file.filename.endswith('.csv'): print(file.filename) fp = zip.open(file.filename, 'r') text = fp.read().decode('UTF-8') f = open('csv/'+file.filename, 'w') f.write(text) f.close()
結果はご覧の通りcsvファイルだけ抜き出すことができました。
スポンサーリンク