#概要
友人「大量の画像ファイルが入ったフォルダから、適当な画像ファイルをピックアップして、フォルダと同じ階層にコピーしたうえで、画像ファイルの名前をフォルダ名に変更するツール作って」
私「おかのした」
#仕様
###1.こんなフォルダがあったとします
「KizunaAI」「MiraiAkari」等の各フォルダには大量の画像が入っており、001~のようなファイル名が付いています
images
├ KizunaAI
│ ├ 001.jpg
│ └ ....ipg
│
├ MiraiAkari
│ ├ 001.jpg
│ └ ....ipg
└ ....
###2.それをこうします
各画像フォルダから適当な画像ファイルをコピーし、フォルダと同じ階層に置いたうえで、ファイル名を所属していたフォルダの名前にリネームします。
images
├ KizunaAI
│ ├ 001.jpg
│ └ ....ipg
├ KizunaAI.jpg
├ MiraiAkari
│ ├ 001.jpg
│ └ ....ipg
├ MiraiAkari.jpg
└ ....
以上!!!!
#実装
ひとまず手持ちのAnaconda環境で実装しました。
私「ずいぶん改まって頼んで来たからどんな深刻な内容かと思いきや」
from PIL import Image
import os, glob
rootpath = "./images"
files = os.listdir(rootpath)
#rootpath配下の全ディレクトリを取得
dirs = [f for f in files if os.path.isdir(os.path.join(rootpath, f))]
#せっかくなのでコンソールに表示
print(dirs) # ['dir1', 'dir2']
#全ディレクトリに対して実行
for dir in dirs :
#全ファイルをスキャン
files = glob.glob(rootpath +"/"+ dir + "/*.*")
#拡張子を引っこ抜く
targetFile = files[0]
root, ext = os.path.splitext(targetFile)
#画像オープン
img = Image.open(targetFile)
#リネームしてルートパス直下に保存
img.save(rootpath + '/' + dir + ext)
#EXEにする
Anacondaは少々面倒くさいので、EXE化してワンクリックで動くようします
####1.Pyinstallerのインストール
Anaconda の仮想環境ごとEXEにしてくれる凄いツールです。つまりこいつがあればPython環境がない人でも動かせるらしいです。
1KBもないコードに対して300MB越えのEXEを吐き出す困ったちゃんですが、便利なので許します。
conda install -c conda-forge pyinstaller
余談ですが私はcondaでインストールするほうが好きです。
####2.EXEにする
あくしろよ
pyinstaller main.py --onefile
私「できた(バグ無しとは言ってない)」
友人「やりますねぇ!」
#その他
友人「フォルダ名に"[]"あると対応してくれないんですがそれは」
私「ファ!?」
友人「まあちょっとしかないからここは手動でやるわ」
私「ぐう聖」
暇があったらこの不具合対応版も記事にします