見出し画像

Pythonで業務"非"効率化します。ファイル名を適当に一括変更

昨今、業務効率化、効率化、コウリツカと叫ばれています。しかしながら、業務非効率化に恋しくなっている人も増えています。業務非効率化のため、Pythonを用いたファイル名をランダムでB’zの曲名に変更するツールを紹介します。MITライセンスのため、商用利用OK、改変OKです。

ツールの概要

あるフォルダの「ファイル名」や「フォルダ名」を、B'zの曲名にランダムで一括変更します。これによって、ファイル内部に何が書いてあるかわからなくなります。ファイル数が多いほど、その効果は高まります。同時に、B'zの曲も聞きたくなるでしょう。

ツールの使い方

①ツール保管場所(👇GitHub)にアクセスしてください。

②右上のCodeボタン(緑色)からZipでダウンロードしてください。

③ダウンロードしたZipを解凍します。

rename.pyword.csvを一括変更ターゲットとしているフォルダにコピペしてください。

rename.pyを実行してください。

カスタマイズ方法

word.csvのリスト変更すると、変更後のファイル名の候補も変更されます。例えば、Perfumeの曲名に全て入れ替えると、変更後のファイル名もPerfumeのタイトルになります。

注意事項

ファイルを変更した後、元に戻すことはできません。

参考 ソースコード

import os
import pandas as pd
import random

# フォルダ内のファイル名を取得
files = os.listdir()

# exceptionsに含まれるファイル名を、filesから除外
exceptions = ['rename.ipynb', 'rename.py', 'words.csv', '.ipynb_checkpoints'] 
for exception in exceptions:
    if exception in files:
        files.remove(exception)

# words.csvのリストを取得
words = pd.read_csv("words.csv", header=None).values.tolist()

# フォルダ内のファイル数に合わせて、words.csvから変更後ファイル名をランダムで取得
change_to = []
for file in files:
    word = random.choice(words)[0]
    # 変更後ファイル名の重複を避けるため、重複した場合はファイル名にversionを付与
    i = 2
    while word in change_to:
        if i == 2:
            word = word + "_v2"
        else:
            word = word.split('_v')[-2] + "_v" + str(i)
        i += 1
    change_to.append(word)

# ファイル名の変更を実施
i = 0
for file in files:
    # 拡張子を現状維持するために変更前ファイル名の拡張子を取得して、後続の変更処理に利用する。
    if len(file.split('.')) == 1:
        extension = ""
    else:
        extension = file.split('.')[-1]
    os.rename(file, change_to[i] + "." + extension) 
    i +=1

さいごに

非効率化ツールでも、様々なロジックを実装する必要があります。変更不要なファイルの除去、ファイル名のダブりの回避、拡張子の取得などです。非効率化ツールの開発は、スキル獲得に対して効率的です。

マジメに学習したい人は、最近ブームのブロックチェーン開発でも学習するとよいでしょう。私が初心者向けに執筆した著作「Pythonによるブロックチェーン開発教本」を紹介します。👇

この記事が気に入ったらサポートをしてみませんか?