Pythonでパスワード付きZIPファイルを自動作成する方法【標準ライブラリ+zipコマンド】

はじめに

ファイルを社外に送るとき、「パスワード付きZIPにしてね」って言われること、よくありますよね。でも、毎回右クリックからZIP化して、パス付けて…ってめんどう!

この記事では、Pythonでパスワード付きZIPファイルを自動作成するスクリプトを紹介します。
メール送信はナシ!まずはZIPの自動化だけに絞って、最小構成でサクッと作っていきます。


やりたいこと

  1. 指定したファイルをZIP形式に圧縮

  2. ZIPファイルにパスワードをつける

  3. 出力先フォルダに自動保存

(+ 必要に応じてメール送信などの処理を後で追加できる設計)


準備するもの

ライブラリ

インポート不要で使用することができます

  • shutil(標準)

  • subprocess(標準)

  • os(標準)

このライブラリの説明

 

ライブラリ 用途
shutil ファイルやディレクトリ操作、ZIP作成
subprocess システムコマンドの実行(今回はzipコマンド)
os パス操作など基本操作

ディレクトリ構成

zip_creator/
├── main.py
├── send_file/
│ └── sample.csv
└── sent_zips/
└── (ここにZIPが出力される)

コードスクリプト

コードスクリプトの概要

  • 指定したファイルをZIP化

  • zip -Pコマンドでパスワードを付与

  • 出力先に保存

main.py
import os
import subprocess

# --- 設定 ---
file_to_zip = 'send_file/sample.csv'
output_zip = 'sent_zips/sample_protected.zip'
zip_password = 'secret123'

# --- 実行 ---
def create_password_zip(input_file, output_path, password):
# zipコマンドが使えるか確認(Linux/Mac想定)
if not shutil.which('zip'):
raise EnvironmentError("zipコマンドが使えません。インストールされているか確認してください。")

# zipコマンド実行
subprocess.run(['zip', '-j', '-P', password, output_path, input_file], check=True)
print(f'ZIP作成成功: {output_path}')

create_password_zip(file_to_zip, output_zip, zip_password)

Windows版のスクリプト

main.py

import pyminizip
import os

file_to_zip = 'send_file/sample.csv'
output_zip = 'sent_zips/sample_protected.zip'
password = 'secret123'
compression_level = 5 # 1〜9

def create_password_zip(input_file, output_file, password, level):
pyminizip.compress(input_file, None, output_file, password, level)
print(f'ZIP作成成功: {output_file}')

create_password_zip(file_to_zip, output_zip, password, compression_level)

実行結果

  • sent_zips/フォルダ内に sample_protected.zip が作成されます

  • パスワード付きで、受け取った側は解凍時にパスを求められます

コード解説

  • zip -j → フォルダ構造を含めず、ファイルだけを圧縮

  • -Pオプション → パスワードを直接指定

  • subprocess.run()でコマンド実行

  • Windows環境では別対応(後述)


注意点

  • このスクリプトはLinux / Mac向けです(zipコマンド前提)。

  • Windows環境では 7z コマンドなど別アプローチが必要。

  • セキュリティ的には -P での平文パス指定は推奨されないので、実運用では注意。

  • 複数ファイルの圧縮にも対応できます(ファイルリストを渡すだけ)


まとめ

面倒なZIP作業も、Pythonで数行書くだけで一発自動化!
メール送信機能をあとから追加したり、フォルダごとZIP化する応用も簡単にできます。

「作るのが楽しい × 業務にも使える」そんな小ネタスクリプトでした!

コメント

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