【Python】ファイルやフォルダの圧縮と展開 – tarfile, zipfile

Pythonの応用
スポンサーリンク

初心者の独学でのプログラミング学習はとてもツライ…

プログラミングをマスターしたい!

今のIT業界はプログラミングエンジニアが不足していると言われています。
高収入の職業とも言われる分野もありますし、AI、機械学習、ディープラーニング、IOTといった注目される分野が目白押しです。

でも、いざ初心者がプログラミングをマスターしようとすると…

  • 本を読んだりネットの記事で自力で勉強しているけど限界を感じる
  • プログラミングスクールに定期的に通うのは面倒だ
  • 地方に住んでると家の近くにプログラミングスクールなんてない
  • どのプログラミング言語を学べばいいのか悩む
  • 実際の就職や転職にプログラミングが活かせるのか心配だ

など、プログラミングを自分で勉強しようとすると悩みが尽きません。

プログラミングに詳しい友人に教えてもらおうと思っても、そんな友人なんて滅多にいません。いたとしても細かく教えてくれるほど時間に余裕がある人はいないでしょう。

そんな独学でプログラミングをマスターするのに限界を感じてる方に、オンラインプログラミングスクールをがおすすめです。

おすすめのオンラインスクールはこちら

ここではPythonを使ってファイルの圧縮と展開をやっていきます。

tarfileとzipfileを扱います。

tarfileはMacやLinuxなどを使っている人は目にすることがあると思いますが、Windowsを使っている人にはあまり目にすることはないでしょう。もう1つのzipfileはどちらのユーザーもよく使うものだと思います。

では、フォルダやファイルをひとまとめにする圧縮と展開をそれぞれやっていきましょう。

今回の操作をするために、例として作業ディレクトリに次のようなフォルダとテキストファイルの構造を用意しました。ディレクトリの中にさらにディレクトリやファイルが入っているのを確認してください。

これを使って作業をしていきます。DS_Storeが表示されていますが、これは本来は隠しファイルなので作業上の説明としては無視してください。

スポンサーリンク

tarfileを使った圧縮と展開

それでは圧縮と展開をやっていきましょう。

ここでは、tarfileをインポートして作業して行きます。

with文を使って圧縮ファイルと作っていきます。ファイル名を’test.tar.gz’に指定して、モード’w’でファイルを作成しますが、圧縮する為に’w:gz’とします。これをtfとしてadd()で一番上にあるフォルダのdir1をファイルに入れて圧縮します。

実行すると、同じ作業ディレクトリ内に、test.tar.gzというファイルが作成されるはずです。これで、dir1内にあるファイルやディレクトリを圧縮することができました。

今度はこれは展開していきましょう。

展開するには、読み込みなのでモードを’r:gz’にします。これをextractall()を使ってpathをtest_dirとして展開します。

実行すると、作業ディレクトリにtest_dirというフォルダができて、その中身を確認すると、dir1以下の各ファイルとフォルダが入っているのが確認できます。

今、圧縮したファイルを全てを展開しましたが、展開しなくても中身を確認することができます。

dir1内にあるdir1.txtファイルを確認するコードを書いてみます。

ファイルを開くまでは同じで、さらにwith文を使ってextractfile()に対象のファイルの位置を指定して、それをread()で読んで出力します。

実行するとこうなります。(ファイル名tar.pyでAtomで実行しています)

ターミナルにファイルに書かれた内容が表示されています。

Macのターミナルでtarファイルを圧縮・展開するコマンド

上記のディレクトリ、ファイルを同じようにMacのターミナルからUNIXコマンドを使って圧縮・展開するには次のコマンドで行います。

  • 圧縮コマンド

  • 展開コマンド

スポンサーリンク

zipfileを使った圧縮と展開

今度はzipfileを使って圧縮と展開をやっていきましょう。

zipfileをインポートします。with文でZIpfile()に’test.zip’のファイル名を指定して圧縮します。モードは書き込みなので’w’です。これをzとして、write()でdir1を書き込むことで圧縮ファイルtest.zipが出来上がります

ただし、これはdir1のフォルダのみが圧縮されるだけで他の中身はありません。write()で書き込む時に、z.write(‘dir1/dir.txt’)などと全て指定しかないと中身も一緒に圧縮されません。

そこで、フォルダ内全てのファイルを圧縮する方法をみていきましょう。

ここではさらに、globというものをインポートします。Zipfile()で開くまでは同じです。

これをfor文を使って取り出すのですが、glob()を使ってフォルダを指定します。この時アスタリスク(*)を2つ指定しています。これが1つだと同じフォルダ内しか見ませんが、2つにすることで配下のディレクトリ、ファイルを見ることになります。recursiveをTrueにすることで、再帰的にディレクトリ内を全て見てくれることになります。これで取り出したものをwrite()で圧縮ファイルに書き込んでいます。(ここではpirnt()で抜き出したファイルを出力しています)

実行します。(zipdir.pyとしてAtomで実行しています)

dir1内の全てのファイルを取り出しています。同じディレクトリ内にtest.zipが作成されていることを確認しましょう。

今度はこの圧縮ファイルを展開してみます。

Zipfile()で圧縮ファイルを指定し、読み込みなのでモードを’r’とします。これをextractall()で展開先フォルダをtest_zipとして展開しています。

実行すると、作業ディレクトリにtest_zipというフォルダができて、その中身を確認すると、dir1以下の各ファイルとフォルダが入っているのが確認できます。

コードを実行しなくても圧縮ファイルをダブルクリックすればファイルは展開できます。

こちらもファイルを全て展開しなくても中身を確認することができます。

tarfileでやった時と同じように、dir1内にあるdir1.txtファイルを確認するコードを書いてみます。

ファイルを開くまでは同じで、さらにwith文を使ってopen()に対象のファイルの位置を指定して、それをread()で読んで出力します。

実行するとこうなります。

dir1.txtの中身が表示されています。

Macのターミナルでzipファイルを圧縮・展開するコマンド

同じようにMacのターミナルからUNIXコマンドを使って圧縮・展開するには次のコマンドで行います。

  • 圧縮コマンド

  • 展開コマンド

Macのターミナル操作の基本的なUNIXコマンドはこちらです。

Macのターミナル操作でよく使う基本的なUNIXコマンド入門一覧
Macでターミナルの操作を覚えて置くと何かと便利です。ここではMacのターミナル操作でよく使う基本的なUNIXコマンドを入門編として一覧にしてみました。Linuxコマンドとしても使えますから、他でも活用できますよ。Macの醍醐味もわかります。
スポンサーリンク

まとめ

ここでは、Pythonを使ってファイルやフォルダの圧縮と展開をやってみました。

tarfileとzipfileの使い方はどちらも似ていますが、違いもありますのでしっかり区別して起きましょう。

tarfileはMacやLinuxを使っている人は見慣れているでしょうが、Windowsユーザーはあまり使わないと思います。

解凍ソフトなどがインストールされていれば、ダブルクリックなどで圧縮ファイルを展開できます。

自宅学習はオンラインプログラミングスクールを活用!

自宅学習にはオンラインプログラミングスクールがおすすめ!

オンラインプログラミングスクールは独学でプログラミングを学習する時のデメリットを解消する仕組みが備わっています。

気になるところは…

学習がオンラインで完結するのはもちろんですが、独学ではできない質問サポートがあるかどうか。わからないことを現役のエンジニアが質問に答えてくれるといいですよね。

受講者個人に担当のメンターがつき、マンツーマンで学習の相談に乗ってくれることも必要で、ITエンジニアの世界についても伺えたりもすると幅が広がります。

オンライン面談だけでなく、チャット機能を使って気軽に質問を投げかけることができることも大切です。

また、オリジナルプロダクトの開発とサポートがコースの中に組み込まれていて、独学ではなかなか難しい実践的なスキルの習得にもつなげたい。

プログラミングをマスターした後の実際の仕事につながる転職サポートでがあると、ITエンジニアの世界に飛び込むのに不安が解消されます。

そんな豊富なメニューが揃っているおすすめのオンラインプログラミングスクールがこちらにあります。

おすすめのオンラインプログラミングスクールはこちら

TechAcademyはおすすめのオンラインプログラミングスクール!

オンラインのプログラミングスクールでは、テックアカデミーの充実度が目を見張ります。

オンラインで受講が完結するので、自宅学習でプログラミングをマスターしたい人にはテックアカデミーがおすすめです。

メンター制度も現役のプロが対応してくれます。大学生などが対応しているスクールに比べて本気度と専門性が違います。メンター制度の無いスクールもありますし、担当では無いメンターが対応するスクールもあったりするので、相談の質が違いますね。

チャットサポートもあるので、それが無いスクールに比べて相談の気軽さの違いがあります。

プロダクト開発のサポートで実践力が養われるだけでなく、どの講座を利用しても転職サポートが受けられるのはありがたい。

用意されているコースも、初心者向けのプログラミングコースから、Python、Java、PHP、iPhoneアプリ、AndroidといったITエンジニアのベースとなる主要な言語だけでなく、AI、データサイエンス、ブロックチェーン、webアプリケーションと行った実践的なコースまで用意しています。

他にも、webデザインやUI/UXデザイン、動画編集、webディレクションやwebマーケティングといったプログラミング以外での役立つコースまであります。

このようなたくさんの選択肢から自分にあったコースを選ぶことがでるのがテックアカデミーです。

コースの期間も短期間でマスターしたり、長期の受講でじっくり取り組むコースを選ぶこともできます。

複数講座のセットコースを利用することで大幅な割引が受けらるので、お得に受講することもできます。

無料体験もありますので、プログラミング学習でオンラインスクールを考えている人はTechAcademyをぜひ利用してみてください。

テックアカデミーの公式サイトはこちら

タイトルとURLをコピーしました