フォルダ内に多くの画像がある。 フォルダを選択すると、その中に画像を、50枚ずつzip圧縮するpythonスクリプトを書いて

以下は、指定されたフォルダ内の画像を50枚ずつ分割してZIPファイルに圧縮するPythonスクリプトです。Pythonの標準ライブラリを使って実装しています。

必要なライブラリ

Pythonの標準ライブラリであるoszipfileを使用します。これらはデフォルトでインストールされているため、追加のインストールは不要です。

スクリプト

python
import os import zipfile def zip_images_in_batches(folder_path, batch_size=50): # 指定されたフォルダ内のファイル一覧を取得 files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))] images = [f for f in files if f.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tiff'))] # 画像を50枚ずつのバッチに分割してZIP圧縮 batch_number = 1 for i in range(0, len(images), batch_size): batch_images = images[i:i + batch_size] zip_filename = os.path.join(folder_path, f'batch_{batch_number}.zip') with zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED) as zipf: for image in batch_images: zipf.write(os.path.join(folder_path, image), image) print(f'Created {zip_filename}') batch_number += 1 # 使用例 folder_path = 'path_to_your_folder' # 圧縮したい画像があるフォルダのパスを指定 zip_images_in_batches(folder_path)

スクリプトの説明

  1. フォルダ内のファイルを取得:

    • os.listdir(folder_path)を使用して、指定されたフォルダ内のすべてのファイルのリストを取得します。
    • 画像ファイル(.png, .jpg, .jpeg, .gif, .bmp, .tiff)のみをフィルタリングしてimagesリストに保存します。
  2. 画像を50枚ずつ分割:

    • range(0, len(images), batch_size)を使用して、画像リストを50枚ずつのバッチに分割します。
    • 各バッチについて、ZIPファイルを作成し、zipfile.ZipFileを使用して画像を追加します。
  3. ZIPファイルの作成:

    • zipfile.ZipFileコンテキストマネージャーを使用して、バッチごとにZIPファイルを作成します。
    • zipf.writeメソッドを使用して、各画像ファイルをZIPアーカイブに追加します。
  4. ZIPファイルの名前:

    • 各バッチのZIPファイルはbatch_1.zip, batch_2.zipのように名前が付けられます。

使用方法

  1. スクリプトを保存:

    • 上記のスクリプトをzip_images.pyという名前で保存します。
  2. フォルダパスを指定:

    • スクリプト内のfolder_path変数に圧縮したい画像が保存されているフォルダのパスを指定します。
  3. スクリプトを実行:

    • コマンドラインやターミナルでpython zip_images.pyを実行します。

このスクリプトは、指定されたフォルダ内の画像を50枚ずつ分割してZIPファイルに圧縮します。各ZIPファイルはbatch_1.zip, batch_2.zipのように名前が付けられ、元のフォルダ内に保存されます。

未分類

Posted by ぼっち