非常にたくさんの画像ファイルなどがあるとき、「101.jpeg」とかでもいいっちゃいいんだけど、SEO的にはまあ一応ファイル名もこだわっていきたいところだよね。
でも1個1個変えてくのめんどくさすぎね?みたいな葛藤の解決策。
イメージとしては
| 1 | apple |
| 2 | lemon |
| 3 | melon |
| 4 | tomato |
みたいなCSVを作っておいて、左から右に一括変換するというやつ。
シンプルだけど使い勝手が良くて個人的にはよく使ってる。
っていうのをChatGPTに作ってもらったから特別に「オンラインサロンのメンバー限定で」公開していくよ!(嘘)
目次
まずはPythonを入れよ。話はそれからだ
前提としてPythonなのでPythonをなんらかの方法で入れてください。
ちょっと引っかかったりするかもだけど、それ系の本を何冊か読んで、その通りにやれば、やがてうまくいくはずです。
できたら、以下のPythonファイルを作っていきます。
ファイル名をCSVで一括変換するPythonファイル
.pyのファイルの方は以下のような感じにします。
import os
import pandas as pd
# CSVファイルと画像フォルダのパスを指定
csv_file = 'csvファイルの置いてあるフォルダ/name_henkan.csv' # CSVファイルのパス
folder_path = '画像ファイルの置いてある場所' # 画像ファイルがあるフォルダのパス
# CSVファイルを読み込む
df = pd.read_csv(csv_file, header=None)
df.columns = ['old_name', 'new_name'] # 'old_name' は現在の番号, 'new_name' は新しい名前
# ファイル名を変更する
for index, row in df.iterrows():
old_file_jpg = os.path.join(folder_path, f"{row['old_name']}.jpg")
old_file_png = os.path.join(folder_path, f"{row['old_name']}.png")
new_file_jpg = os.path.join(folder_path, f"{row['new_name']}.jpg")
new_file_png = os.path.join(folder_path, f"{row['new_name']}.png")
if os.path.exists(old_file_jpg):
os.rename(old_file_jpg, new_file_jpg)
print(f"Renamed: {old_file_jpg} -> {new_file_jpg}")
elif os.path.exists(old_file_png):
os.rename(old_file_png, new_file_png)
print(f"Renamed: {old_file_png} -> {new_file_png}")
else:
print(f"File not found: {row['old_name']} (.jpg or .png)")
print("Renaming completed.")
まあわかると思うんだけど、マーカーの部分を自分のフォルダ名に変えてください。名前はなんでもいいけど、まあ迷ったら「rename_files.py」とでもしとけ。
ちなみに変換するCSVの方は以下のような感じで作ってください。
ファイル名:「name_henkan.csv」(なんでもいいけどカンマくぎりで)
内容:1列に1からの数字連番、2列目に変換したい文字列
| 1 | apple |
| 2 | lemon |
| 3 | melon |
| 4 | tomato |
そしたらIDLEでもターミナルでもVScodeなんでも良いのでPythonファイルを起動します。
すると、10秒くらいして画像の名前がばばばっと切り替わっていきます。
以上終わり。
参考1
拡張子はpngとjpgにしてるけど、増やしたかったら書き足して。
参考2:間違えちまった時は?
愚かな人間よ、csvファイルを逆にして動かせ。さすれば治る。(1列を2列に、2列を1列に)
コメント