※さらに30日間返金保証ありなので、実質リスクゼロ。
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
今回はPythonを使ってZipファイルと呼ばれる圧縮ファイルを操作する方法を学んでいきましょう。
Zipファイルとは?
Zipファイル(圧縮ファイル)とは、データ圧縮を施されたファイルのことです。
それでは、データ圧縮とは何でしょうか?
Wikipidiaでは以下のように書かれています。
データ圧縮(データあっしゅく)とは、あるデータをそのデータの実質的な性質(専門用語では「情報量」)を保ったまま、データ量を減らした別のデータに変換すること。
参照:Wikipidia
つまりは、Zipファイルにすることで、ファイルやフォルダの内容を変えずサイズを小さくできるということです。
ちなみにPythonを使ってZipファイルを扱いたいときは、zipfileモジュールの中のZipFile関数を使います。
よって、以下のようにzipfileモジュールをインポートしておいてください。
import zipfile
ファイルを圧縮してZipファイルを作ろう
それではまず既存のファイルを圧縮して、Zipファイルを作成していきましょう。
Zipファイルを作成する(ファイルの圧縮)
以下ではzipfileモジュールの中のZipFile関数を使用して、新たなZipファイルを作っていきます。
以下のコードを見てください。
import zipfile with zipfile.ZipFile('C:\\Users\\minchi\\new.zip', 'w', compression=zipfile.ZIP_DEFLATED) as myzip: myzip.write('C:\\Users\\minchi\\file1.txt')
見て分かる通り、with文を使っていますね。
ZipFile関数の第1引数にはZipファイルを作る場所を指定します。
上のものを見れば分かる通り、フォルダminchiの下に、new.zipというZipファイルができてますね。
ちなみにZipファイルの拡張子はzipです。
ZipFile関数の第2引数にはwをとります。これはモードと言って、wを指定した時は、ファイルへの書き込み、もしくはファイルがない場合は作成されます。
今の場合、Zipファイルはまだ作られてないので、wを指定することで新しくnew.zipを作ることができます。
モードやwith文については以下の記事でより詳しく説明しているので参考にしてください。
最後に上のZipFile関数で第3引数に指定したcompressionで圧縮形式を指定します。
通常の圧縮でよい場合は、上のようにzipfile.ZIP_DEFLATEDでよいでしょう。
2行目ではwrite関数を使っています。
引数にファイルの場所を指定すると、そのファイルがZipファイルとして圧縮されます。
ここではfile1.txtが圧縮されるということです。
ファイルをZipファイルに追加する
上でZipファイルは作ることができたので、新たなファイルをこのZipファイルに追加してみましょう。
以下のようにしてください。
with zipfile.ZipFile('C:\\Users\\minchi\\new.zip', 'a') as add_zip: add_zip.write('C:\\Users\\minchi\\file2.txt')
基本的な記述の仕方はZipファイル作成の時と同じです。
異なる点はZipFile関数の第2引数。ここのモードをwではなくaにすることで、新たなファイルをZipファイル(new.zip)に追加することができます。
そして、ここではfile2.txtが新たにZipファイルの中に加えられました。
Zipファイルを元のファイルに戻す
次は、上で作成したZipファイルの中身を確認したり、中にあるファイルを展開したりする方法です。
Zipファイルの中身を読み込む
ではZipファイルの中にあるファイルを確認していきます。
以下を見てください。
with zipfile.ZipFile('C:\\Users\\minchi\\new.zip') as read_zip: print(read_zip.namelist())
Zipファイルの中身を見たいだけの時は、ZipFile関数では先ほどのようにモードを指定する必要はありません。
ここではread_zipにnamelist関数を適用することで、リストとして、Zipファイルの中にあるファイルが表示されます。
Zipファイルを展開する(中身のファイルを全て取り出す)
次はZipファイルを展開していきます。先ほどのように中身を見るだけではなく、元のファイルのサイズに戻します。
以下を見てください。
with zipfile.ZipFile('C:\\Users\\minchi\\new.zip') as ex_zip: ex_zip.extractall('C:\\Users\\minchi')
ここでもやることは中身を確認する場合と同じで、最後にextractall関数を適用してあげる部分だけ異なります。
こうすることで、new.zipの中に入っているfile1.txtとfile2.txtを元のファイルサイズとして復元することができます。
extractall関数では、ファイルを展開したいフォルダを指定します。
まとめ
今回はPythonを使って、Zipファイルを作製する方法、Zipファイルにファイルを追加する方法、Zipファイルから中身を読み出す方法、Zipファイルの中身を展開する方法を学びました。
Zipファイルに関しては、皆さんも普段から触れることが多いと思うので、1度Pythonを使ってZipファイルを操作してみてください。
※さらに30日間返金保証ありなので、実質リスクゼロ。
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル