【Python】zipファイルを作成する

 

こんにちは。のっくん(@yamagablog)です。

 

この記事では、pythonを使ってzipファイル展開する方法をご紹介します。

 

「Pythonでzipファイルを操作したい」

 

そんな方に読んでいただければと思います。

 

 

zipファイルを作成する

 

適当なファイル、例えば昨日と今日の日記が書かれたテキストファイル(.txt)をzipにしてみます。

 

pythonではzipfileモジュールを使います。

 

import zipfile
with zipfile.ZipFile('data/diary.zip','w') as new_zip:
    new_zip.write('data/20181222.txt', compress_type=zipfile.ZIP_DEFLATED)
    new_zip.write('data/20181223.txt', compress_type=zipfile.ZIP_DEFLATED)

 

withを使って圧縮ファイルを指定しています。本来はファイルを開いたら、closeをする必要があるのですが、withを使うとcloseする必要がありません。

 

writeを使って、昨日と今日の日記が書かれたテキストファイルを順番に圧縮するようにしています。第二引数では、良い感じに圧縮してくれる(DEFLATED)を指定しています。

 

zipファイルの情報を得る

 

作成したzipファイルの中身を見ることができます。

 

import zipfile,os
with zipfile.ZipFile('data/diary.zip') as diary_zip:
    print('圧縮ファイルの中身{}です。'.format(diary_zip.namelist()))
    diary_info = diary_zip.getinfo('data/20181222.txt')
    print('圧縮ファイル前{},圧縮後{}'.format(diary_info.file_size,diary_info.compress_size))

 

また、圧縮前のサイズ「file_size」と、圧縮後のサイズ「compress_size」の情報を得ることができます。

 

圧縮ファイルの中身['data/20181222.txt', 'data/20181223.txt']です。
圧縮ファイル前112,圧縮後99

 

[speech_bubble type=”rtail” subtype=”L1″ icon=”profile_face.png” name=”のっくん”]圧縮することで確かにサイズが小さくなっていることが確認できたね。[/speech_bubble]

 

zipファイルを展開する

 

作成したzipファイルを展開してみます。

 

import zipfile,os

#zipファイルと同じ場所に展開される
with zipfile.ZipFile('data/diary.zip') as diary_zip:
    diary_zip.extractall()

 

コードのように場所を指定しないとzipファイルのあった場所と同じ場所に展開されます。

 

extractall()の引数にパスを指定すると、その場所にファイルが展開されます。

 

まとめ

記事のまとめ
・zipファイルを作成するにはzipfileモジュールを使う
・圧縮前と圧縮後のファイルサイズを取得できる
・パスを指定しないとzipファイルと同じ場所にファイルが展開される

 

参考

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog