【Python入門】zipfileモジュールでフォルダをzip圧縮する方法
Pythonでフォルダ(ディレクトリ)全体をzipアーカイブに圧縮したい場合は、標準ライブラリのzipfileモジュールを使用します。ディレクトリツリーをos.walkで走査し、その中に含まれるすべてのファイルを再帰的にアーカイブへ追加していくのが基本的な流れです。
サンプルコード
import os
import zipfile
def zipdir(path, ziph):
# ziph は zipfile のハンドル
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file))
zipf = zipfile.ZipFile('Zipped_file.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir('./my_folder', zipf)
zipf.close()上記のコードを実行すると、my_folder内のすべてのファイルがZipped_file.zipという1つのファイルに圧縮され、カレントディレクトリに保存されます。
コードのポイント
zipfile.ZipFileの第3引数に指定しているZIP_DEFLATEDは、DEFLATEアルゴリズムによる圧縮を有効にする設定です。これによりファイルサイズを効率的に削減できます。圧縮は不要でアーカイブ化だけ行いたい場合は、ZIP_STOREDを指定してください。
また、os.walkは指定したパス以下を再帰的にたどるため、サブフォルダ内のファイルも自動的に処理対象となります。ネストした深い階層のフォルダでも、そのまま同じコードで対応可能です。
さらに、Pythonではwith文を使うことでclose()の呼び出し忘れを防げます。次のように書くと、より安全で簡潔なコードになります。
import os
import zipfile
def zipdir(path, ziph):
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file))
with zipfile.ZipFile('Zipped_file.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
zipdir('./my_folder', zipf)例外が発生した場合でも自動的にファイルが閉じられるため、実務ではwith文の使用が推奨されます。
-
PythonでPowerPointファイルを自動作成する方法!python-pptxの基本を徹底解説
はじめに誰もが一度はPowerPointのプレゼンテーション資料を作成した経験があるのではないでしょうか。多くの場合、Microsoft PowerPointやGoogleスライドといったGUIツールを使うことが多いでしょう。しかし、ライセンスを持っていなかったり、インターネット環境にアクセスできなかったりすることもあります。あるいは、「プログラマーらしく」コードで自動生成したいと考える方もいるはずです。ご安心ください。そんなときこそPythonの出番です!この記事では、Pythonを使ってPowerPointファイルを作成し、コンテンツを追加する方法を解説します。それでは早速始めましょう!準
-
Pythonでファイルを削除する方法をわかりやすく解説
Pythonでファイルを削除する基本の方法 Pythonでは、標準ライブラリのosモジュールを使うことで、単一のファイルや空のフォルダ(ディレクトリ)を簡単に削除できます。外部ライブラリのインストールは不要で、import osと記述するだけですぐに利用できるのが魅力です。 os.remove() でファイルを削除する たとえば、カレントディレクトリにある my_file.txt というファイルを削除したい場合は、次のように記述します。 >>> import os >>> os.remove(my_file.txt) os.remove() の引数には、削