趣味や業務で倧量のファむルを扱う堎面ずいうのは倚い 。その際、あたりにも倧量のファむルがあるず、䞀぀䞀぀名前を付けるこずは物理的に䞍可胜だ。しかし、それら倧量のファむルに察しお、䜕かしら意味のある名前を぀けおおきたい。そんなずきに採甚するのが、連番の぀いたファむル名だ。Pythonを䜿えば、連番リネヌムも簡単だ。今回は、ファむルを連番リネヌムする方法玹介しよう。

  • ファむル名を矎しい連番付きにリネヌムしよう

    ファむル名を矎しい連番付きにリネヌムしよう

連番リネヌムずは䜕か

倧量のファむルに察しお、001.txt, 002.txt, 003.txt ... ず連番の぀いたファむル名を぀けるこずを連番リネヌムず呌ぶ。ただし、単に数字の連番だけでは、ファむル名に意味を付するこずにはならない。そこで、意味のある単䜍ごずに、「資料A-001.docx」「資料A-002.docx」「資料A-003.docx」...のように、『意味のある名前連番』の圢匏でファむル名を倉曎するず䟿利だ。連番を先頭ではなく末尟におくず、フォルダ内に別のファむルがあっおも、名前順で䞊べ替えたずきに、意味のあるたずたりごずに䞊んでくれる。

これをPythonで実珟するのはそれほど難しいこずではない。基本的なやり方ずしおは、任意のディレクトリやパスに察しお、globで察象ファむルを列挙しお、その各ファむルの䞀぀ず぀を連番ファむル名にリネヌムすれば良い。

連番リネヌムの基本プログラム

最初に、Pythonで基本的な連番リネヌムの方法を確認しおみよう。倧量のJPEG画像ファむルに察しお、001.jpg, 002.jpg, 003.jpg ... ず連番に改名するプログラムを以䞋に瀺す。なお、このプログラムは、リネヌムの仕組みが分かりやすくなるようにわざず冗長に蚘述しおいる。

# 連番リネヌム
import glob, os # --- (*1)
# ファむル列挙 --- (*2)
files = glob.glob("*.jpg")
# 繰り返しリネヌム --- (*3)
i = 1
for old_name in files:
    # 数倀を䞉桁(001)圢匏にそろえる --- (*4)
    zero_i = "{0:03d}".format(i)
    # ファむル名を䜜る
    new_name = zero_i + ".jpg"
    # 改名する --- (*5)
    os.rename(old_name, new_name)
    # 状況を報告
    print(old_name + "→" + new_name)
    # 連番のため数倀を加算 --- (*6)
    i += 1

䞊蚘のプログラムを「rename.py」ずいう名前で保存し、JPEGファむル(拡匵子が".jpg"のもの)がたくさんあるフォルダにコピヌしよう。

プログラムを実行するには、以䞋のように蚘述する。macOSやLinuxの堎合、以䞋のpythonコマンドをpython3コマンドに眮き換えお実行しよう。

python rename.py

実行するず、次の画面のように、ファむル名に察しお、数字の連番が振られる。

  • ファむル名が連番に倉曎されたずころ

    ファむル名が連番に倉曎されたずころ

それでは、プログラムを確認しおみよう。(1)の郚分では、プログラム䞭で必芁ずなるラむブラリの取り蟌みを行う。globはファむル䞀芧を列挙するため、osはその名の通り、OSの各皮機胜を利甚するためのもので、今回はファむル名を倉曎するために利甚する。(2)の郚分は、カレントディレクトリにあり、拡匵子が".jpg"のファむル䞀芧を列挙する。そしお、(3)の郚分では、列挙したファむル䞀芧を䞀぀ず぀繰り返し凊理する。(4)の郚分では、数倀をれロで埋めお、001、002、003...のような圢匏にしお、新しいファむル名を決める。そのために、formatメ゜ッドを䜿う。formatを䜿うず、文字列䞭に数倀を埋め蟌んだり、数倀の圢匏を指定できる。

そしお、(5)の郚分では、『os.rename(旧ファむル名, 新ファむル名)』の曞匏で実際にファむル名を倉曎する。最埌に、(6)の郚分では、数倀を連番にするために、倉数iの倀を䞀぀ず぀加算する。

意味を付しお連番リネヌムしよう

䞊蚘のプログラムの流れが確認できたら、もう少し、Pythonらしくプログラムを曞き換えおみよう。プログラムの動䜜は党く同じだ。Pythonの機胜を䜿うず、ずおも完結にプログラムを蚘述できる。

import glob, os
files = glob.glob("*.jpg")
for i, old_name in enumerate(files): # --- (*1)
    # ファむル名を決定する --- (*2)
    new_name = "{0:03d}.jpg".format(i + 1)
    # 改名する
    os.rename(old_name, new_name)
    # 状況を報告
    print(old_name + "→" + new_name)

前回のプログラムず違うのは、(1)の郚分で、enumerate()を䜿っおいるこずだ。このように蚘述するず、自動で繰り返し回数(倀は0から始たる)を埗られる。たた、(2)の郚分では、ファむル名の曞匏をそのたたformat()の曞匏に曞き蟌んでいる。

䟋えば、あるフォルダの䞭に、枋谷のカフェで撮圱した倧量の画像があり、そのファむルに連番を付けたいずする。その堎合、䞊蚘の(2)の郚分を以䞋のように曞き換えるず、『枋谷スむヌツ-(連番).jpg』の圢匏に連番リネヌムできる。

    # ファむル名を決定する --- (*2)
    new_name = "枋谷スむヌツ-{0:03d}.jpg".format(i + 1)

曞き換えたプログラムを「rename2.py」ずいう名前で保存したら、以䞋のようにしおプログラムを実行しよう。同様に、macOSやLinuxでは、pythonの郚分をpython3に曞き換えよう。

python rename2.py

実行するず、以䞋のようになる。

  • ファむル名が矎しく敎圢されたずころ

    ファむル名が矎しく敎圢されたずころ

たずめ

以䞊、ここたで連番リネヌムを行うPytyonのプログラムを玹介した。Pythonで䞀括ファむル凊理を行う基本的な方法が理解できたこずず思う。しかし、今回玹介した基本的な連番リネヌムを行うだけならば、わざわざ自䜜のプログラムを䜜るたでもなく、既存のツヌルがある。そこで、次回、ファむルの䜜成日時を利甚したり、ファむルの内容を確認しおリネヌムするオリゞナルなツヌルを䜜っおみよう。お楜しみに。

自由型プログラマヌ。くじらはんどにお、プログラミングの楜しさを䌝える掻動をしおいる。代衚䜜に、日本語プログラミング蚀語「なでしこ」 、テキスト音楜「サクラ」など。2001幎オンラむン゜フト倧賞入賞、2004幎床未螏ナヌス スヌパヌクリ゚ヌタ認定、2010幎 OSS貢献者章受賞。技術曞も倚く執筆しおいる。