とっちゃん@nyanco! です。
今回は指定フォルダのサブフォルダ(第一階層まで)内にあるファイルをランダムに1つピックアップしてoutputフォルダにコピーするPythonコードを作ったので共有するよというお話です。
ニッチなニーズだとは思いますが共有しますにゃ~
筆者は報告書に使用する画像ファイル選定時などで利用してますにゃ~
コードの動作環境
- OS:Windowsで動作確認 ※macOSでは未確認
- Pythonバージョン:3.11.2
- 必要ライブラリ:random、shutil【どちらも標準ライブラリなのでインストール不要】
フォルダ内ファイルランダムピックアップ&コピーpythonコード
早速ですがコードはこちらです。
import os
import random
import shutil
# 画像を探すフォルダのパス
image_folder_path = 'C:/Users/xxxx'
# outputフォルダのパス
output_folder_path = 'C:/Users/xxxx'
# 画像ファイルの拡張子
image_exts = ['.jpg', '.jpeg', '.png', '.gif', '.pdf']
# 画像フォルダ内のフォルダ名を取得
folders = [f for f in os.listdir(image_folder_path) if os.path.isdir(os.path.join(image_folder_path, f))]
# 各フォルダ内の画像からランダムに1つ選択してoutputフォルダにコピー
for folder in folders:
folder_path = os.path.join(image_folder_path, folder)
images = [f for f in os.listdir(folder_path) if os.path.splitext(f)[-1].lower() in image_exts]
if len(images) == 0:
continue
image_name = random.choice(images)
src_path = os.path.join(folder_path, image_name)
dst_path = os.path.join(output_folder_path, image_name)
shutil.copy(src_path, dst_path)
※本コードはChatGPTで生成したコードを少しカスタマイズしています。
フォルダパスの設定
上記コードは2箇所がダミーになっているので各々で設定が必要です。
6行目:image_folder_path = 'C:/Users/xxxx'
9行目:output_folder_path = 'C:/Users/xxxx'
- 6行目にピックアップしたい画像が入っているフォルダが入っているフォルダのパスを指定
- 9行目にピックアップしてコピーした画像ファイルを格納するフォルダのパスを指定
対象ファイルはカスタマイズ可能
デフォルトではピックアップ対象となるファイルは「jpg」「jpeg」「png」「gif」と画像ファイルになってますが、12行目に拡張子を追加・変更することで種類は自由にカスタマイズ可能です。
ピックアップ対象は拡張子で判別してるのでファイルの種類はなんでもOKですにゃ~
コードの挙動内容と使い方
ファイルパスの設定が終われば、あとは.pyファイルをダブルクリックするだけで実行されます。
挙動内容としては以下の通り。
- image_folder_pathで指定したフォルダのサブフォルダにある対象ファイルの中からランダムに1つを選択
- 1.で選択したファイルをimage_folder_pathで指定したフォルダにコピー
- サブフォルダの数だけ繰り返し
ダウンロード
下記より上記コードのpythonファイルをダウンロードできます。
→「gazou-pickup_v1.py」をダウンロードする
Zipファイルがダウンロードされるので解凍してお使いくださいにゃ~
おわりに
今まではチクチク手作業でやってた作業が一瞬で終わるようになりました。控え目に言ってPython、ChatGPT最高です!
プチ自動化プロジェクト、どんどん進めていきますにゃ~
本記事がどなたかの参考になれば幸いです。
今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧
コメント