見出し画像

Python学習⑨~フォルダの圧縮と削除~

現在、書籍を参考にPythonで簡単な自動化プログラムを作る勉強中です。

参考書籍↓

書籍に出てきた自動化プログラムを実際に作り、noteにアウトプットしています。

作るものはこちら↓

  1. 「保管」フォルダ内に「バックアップ用のフォルダ」を作成

  2. 「企画書.docx」ファイルを「プロジェクトフォルダ」から「バックアップ用のフォルダ」内にコピー

  3. 「バックアップフォルダ用のフォルダ」をZIPファイルに圧縮

  4. 「バックアップフォルダ用のフォルダ」を削除

手順を図にしてみました

今回は【手順3】【手順4】の工程をまとめていきます。


【手順3】バックアップ用フォルダをZIP圧縮

Pythonで圧縮する関数はいくつかありますが、書籍では、Shutilモジュールの「make_archive」という関数を使用していました。

■書式
shutil.make_archive(圧縮ファイル名,形式,元フォルダ)

この関数の引数は3つあります。

第1引数:「.zip」などの拡張子は付けない。生成先がカレントディレクトリの直下でなければパス付で指定する。
第2引数:圧縮の形式(「.zip」など)を指定
第3引数:圧縮したい元のフォルダの名前を指定


今回は「'保管\\backup20230816'」をフォルダごと圧縮し、同じ場所にZIPファイルを作るので第1引数と第3引数は同じ文字列を指定します。

前回までのコードに今回の圧縮する以下のコードを追加します。

shutil.make_archive('保管\backup20230816','zip','保管\backup20230816')

import os
import shutil

os.makedirs('保管\\backup20230816') 
shutil.copy('プロジェクト\\企画書.docx', '保管\\backup20230816')
shutil.make_archive('保管\backup20230816','zip','保管\backup20230816')

実行すると、「保管」フォルダの中にZIPファイル「backup20230816」が作成されています。

【手順4】バックアップ用フォルダを削除

圧縮ができたので、最後に元の「backup20230816」を削除します。

フォルダの削除はshutilモジュールのshutil.rmtree関数で行います。

■書式
shutil.rmtree(フォルダ名)

この関数は引数に削除するフォルダ名を指定します。

先ほどまでのコードに以下コードを追加します

shutil.rmtree('保管\backup20230816’)

import os
import shutil

os.makedirs('保管\backup20230816')
shutil.copy('プロジェクト\企画書.docx', '保管\backup20230816')
shutil.make_archive('保管\backup20230816','zip','保管\backup20230816')
shutil.rmtree('保管\backup20230816')

実行すると、「保管」フォルダの中にあった「backup20230816」が削除されています。

なお、shutil.rmtree関数は戻り値が無い関数なので、最後に実行された後はセルの下に「Out[連番]:」は表示されません。

まとめ

これで【手順1】~【手順4】までの処理を作成できました。

一旦ここまで出てきた関数をまとめてみます。

■ここまで出てきた関数まとめ
os.makedirs関数:フォルダを作成する
shutil.copy関数:ファイルをコピーする
shutil.make_archive関数:ファイル・フォルダを圧縮する
shutil.rmtree関数:フォルダを削除する

次回はこれまで作ったコードにコメントを付けるなどをして整理していきます。


いいなと思ったら応援しよう!

りゅう
よろしければサポートお願いします!いただいたサポート費はクリエイターとしての活動費に使わせていただきます!