Pythonを勉強していると、
「Pythonってゲーム以外に何ができるの?」
と思うことがあるかもしれません。
Pythonはゲームを作るだけでなく、パソコンで行っている面倒な作業を自動化することにも利用できます。
例えば、
- ファイルをまとめて整理する
- ファイル名を一括で変更する
- 大量のデータを処理する
- 表計算の作業を自動化する
- Webから情報を取得する
- 定型的な作業を繰り返す
といったことができます。
この記事では、Python初心者でも仕組みを理解しやすいように、複数のファイル名をまとめて変更する簡単なプログラムを作ってみます。
- Pythonは「繰り返し作業」の自動化が得意
- 今回作るプログラム
- 1.ファイルやフォルダーを扱う
- 2.対象のフォルダーを指定する
- 3.JPEGファイルを探す
- 4.sorted()とは?
- 5.ファイルを1個ずつ処理する
- 6.enumerate()で番号を付ける
- 7.新しいファイル名を作る
- {number:03}とは?
- 8.ファイル名を変更する
- 9.処理が終わったことを表示する
- プログラム全体の流れ
- Pythonの「自動化」はここが面白い
- 自動化するときは「ルール」を考える
- こんな自動化もできる
- 自動化するときはバックアップが大切
- まずは「小さな自動化」から始めよう
- Python初心者は「自分の面倒な作業」を探してみよう
- 今回使ったPythonの機能
- まとめ
Pythonは「繰り返し作業」の自動化が得意
人間がパソコンで行う作業には、
同じ操作を何度も繰り返す
というものがたくさんあります。
例えば、次のようなファイルがあったとします。
photo1.jpg
photo2.jpg
photo3.jpg
photo4.jpg
photo5.jpg
これらを、
旅行_01.jpg
旅行_02.jpg
旅行_03.jpg
旅行_04.jpg
旅行_05.jpg
のように変更したいとします。
ファイルが5個程度なら手作業でも問題ありません。
しかし、100個、500個となると大変です。
そこでPythonを使います。
プログラムに、
「このフォルダーにあるファイルを順番に確認して、決められたルールで名前を変更する」
という作業をさせれば、人間が1個ずつ操作する必要がなくなります。
これがPythonによる自動化です。
今回作るプログラム
今回は、フォルダー内にあるJPEG画像の名前を、
元の名前から、
photo_001.jpg
photo_002.jpg
photo_003.jpg
のように変更するプログラムを作ります。
プログラムを実行するとこうなります。

↓

コードはこちらです。
from pathlib import Path
folder = Path("images")
files = sorted(folder.glob("*.jpg"))
for number, file in enumerate(files, start=1):
new_name = folder / f"photo_{number:03}.jpg"
file.rename(new_name)
print("ファイル名の変更が完了しました!")
少し難しく見えるかもしれません。
しかし、一つずつ見ていけば、それほど複雑ではありません。
1.ファイルやフォルダーを扱う
最初に、
from pathlib import Path
と書いています。
これはPythonに用意されているpathlibという機能を利用するための記述です。
pathlibを使うと、
- ファイル
- フォルダー
- ファイルのパス
などを扱いやすくなります。
今回のように、パソコン上のファイルを操作するプログラムでは便利な機能です。
2.対象のフォルダーを指定する
次に、
folder = Path("images")
としています。
これは、
imagesというフォルダーを操作対象にする
という意味です。
例えば、Pythonプログラムと同じ場所に、
images
というフォルダーを作って、その中に画像を入れておきます。
フォルダーの中が、
images
├── photo1.jpg
├── photo2.jpg
├── photo3.jpg
├── photo4.jpg
└── photo5.jpg
となっているとします。
このフォルダーにある画像を、Pythonでまとめて処理します。
3.JPEGファイルを探す
次に、
files = sorted(folder.glob("*.jpg"))
です。
ここではglob()を使っています。
folder.glob("*.jpg")
は、
imagesフォルダーの中から、拡張子が.jpgのファイルを探す
という処理です。
*は、
「任意の文字列」
を表します。
そのため、
photo1.jpg
photo2.jpg
旅行写真.jpg
abc.jpg
など、.jpgで終わるファイルを見つけることができます。
4.sorted()とは?
ここでは、
sorted()
も使っています。
sorted()は、データを並べ替えるための機能です。
例えば、
numbers = [3, 1, 2]
print(sorted(numbers))
とすると、
[1, 2, 3]
のように並べ替えられます。
今回の場合は、見つかったファイルを並べ替えてから処理しています。
5.ファイルを1個ずつ処理する
次に、
for number, file in enumerate(files, start=1):
を見てみましょう。
ここではforを使っています。
forは、複数のデータを順番に処理するときによく使われます。
例えば、
for number in [1, 2, 3]:
print(number)
とすると、
1
2
3
と表示されます。
今回も同じように、見つかったファイルを1個ずつ処理しています。
6.enumerate()で番号を付ける
ここで、
enumerate(files, start=1)
が登場します。
enumerate()を使うと、データに番号を付けながら処理できます。
今回の場合、
photo1.jpg → 1
photo2.jpg → 2
photo3.jpg → 3
のように番号を取得できます。
start=1としているのは、番号を1から始めるためです。
7.新しいファイル名を作る
次に、
new_name = folder / f"photo_{number:03}.jpg"
です。
少し複雑ですね。
ここでは、新しいファイル名を作っています。
例えばnumberが1なら、
photo_001.jpg
になります。
2なら、
photo_002.jpg
です。
3なら、
photo_003.jpg
になります。
{number:03}とは?
ここが少し特殊に見えるかもしれません。
{number:03}
は、
数字を3桁で表示する
という指定です。
例えば、
1 → 001
2 → 002
10 → 010
100 → 100
となります。
そのため、
f"photo_{number:03}.jpg"
によって、
photo_001.jpg
photo_002.jpg
photo_003.jpg
のような名前を作ることができます。
8.ファイル名を変更する
最後に、
file.rename(new_name)
としています。
rename()は、ファイルの名前を変更するための機能です。
例えば、
photo1.jpg
を、
photo_001.jpg
に変更できます。
これをforで繰り返すことで、フォルダー内のファイルを1個ずつ自動的に変更します。
9.処理が終わったことを表示する
最後に、
print("ファイル名の変更が完了しました!")
としています。
すべてのファイルの処理が終わると、
ファイル名の変更が完了しました!
と表示されます。
これで作業完了です。
プログラム全体の流れ
今回のプログラムを簡単に整理すると、次のようになります。
プログラム開始
↓
imagesフォルダーを指定
↓
.jpgファイルを探す
↓
ファイルを順番に取り出す
↓
新しいファイル名を作る
↓
ファイル名を変更
↓
次のファイルへ
↓
すべて終わった?
↓ ↓
NO YES
↓ ↓
繰り返す 完了
つまり、人間が行っていた、
ファイルを選ぶ
↓
名前を変更する
↓
次のファイルを選ぶ
↓
名前を変更する
という作業を、Pythonにやってもらっています。
Pythonの「自動化」はここが面白い
今回のプログラムでは、ファイル名を変更しただけです。
しかし、重要なのは、
一度プログラムを書けば、同じ作業を何度でも自動的に実行できる
ということです。
例えば100個のファイルがあっても、基本的には同じプログラムで処理できます。
人間なら、
1個目
↓
2個目
↓
3個目
↓
……
↓
100個目
と操作する必要があります。
Pythonなら、
for file in files:
のような繰り返し処理を使って、一括で処理できます。
自動化するときは「ルール」を考える
Pythonで自動化するときに重要なのが、
「どんなルールで処理するか」
を考えることです。
例えばファイル整理なら、
.jpgのファイルだけ処理する
というルールを作れます。
さらに、
ファイル名の先頭に
photo_を付ける
というルールも作れます。
このように、
対象を決める
↓
処理のルールを決める
↓
Pythonに実行させる
という考え方をすると、自動化プログラムを作りやすくなります。
こんな自動化もできる
今回のファイル名変更以外にも、Pythonではさまざまな作業を自動化できます。
例えば、
ファイル整理
特定の拡張子のファイルを、自動的にフォルダーへ移動できます。
.jpg → images
.pdf → documents
.txt → text
のように分類することもできます。
大量のファイルを処理する
例えば100枚の画像に対して、同じ処理を繰り返すこともできます。
人間が1枚ずつ操作するのではなく、Pythonにまとめて処理させられます。
CSVデータを処理する
CSVファイルを読み込んで、
- 必要なデータだけ取り出す
- 並べ替える
- 集計する
- 条件に合うデータを探す
といった処理もできます。
定型的な作業を自動化する
例えば、
データを読み込む
↓
必要な情報を取り出す
↓
計算する
↓
結果を保存する
といった一連の作業を自動化できます。
このような処理は、仕事などでも活用できます。
自動化するときはバックアップが大切
ファイルを操作するプログラムを作る場合、注意したいことがあります。
それは、
間違ったプログラムを実行すると、ファイルを意図しない状態に変更してしまう可能性がある
ということです。
特に、
rename()
や、
unlink()
など、ファイルを変更・削除する処理には注意が必要です。
最初は、重要なデータが入っていないテスト用フォルダーを使いましょう。
例えば、
python_test
というフォルダーを作って、コピーしたファイルで実験すると安心です。
まずは「小さな自動化」から始めよう
Pythonによる自動化というと、
「仕事を全部自動化する」
「複雑なAIシステムを作る」
といった大きなものを想像するかもしれません。
しかし、最初はもっと簡単なもので構いません。
例えば、
「100個のファイル名を一括変更する」
だけでも立派な自動化です。
そこから、
ファイル名変更
↓
ファイル整理
↓
CSV処理
↓
画像処理
↓
Web上の情報取得
↓
定型作業の自動化
と少しずつできることを増やしていけばよいでしょう。
Python初心者は「自分の面倒な作業」を探してみよう
Pythonを勉強しているなら、
「自分が普段パソコンで面倒だと思っている作業は何だろう?」
と考えてみるのがおすすめです。
例えば、
- 同じ名前のファイルを大量に変更している
- ファイルを手作業で分類している
- 大量のデータをコピーしている
- 表計算ソフトで同じ計算を繰り返している
- 画像を大量に処理している
などです。
こうした作業には、Pythonで自動化できるものがあります。
「Pythonで何ができるのか」を覚えるだけでなく、
「この面倒な作業、Pythonで自動化できないかな?」
と考えるようになると、Pythonの使い道が一気に広がります。
今回使ったPythonの機能
今回のプログラムでは、次のような機能を使いました。
| Pythonの機能 | 役割 |
|---|---|
Path | ファイルやフォルダーを扱う |
glob() | 条件に合うファイルを探す |
sorted() | ファイルを並べ替える |
for | ファイルを1個ずつ処理する |
enumerate() | ファイルに番号を付ける |
| f文字列 | 新しいファイル名を作る |
rename() | ファイル名を変更する |
前回のゲームでは、
- 変数
ifwhilebreak
などを使いました。
今回は、
forPathglob()enumerate()
などを使っています。
このように、実際に何かを作りながらPythonの機能を覚えていくと、文法の意味も理解しやすくなります。
まとめ
今回は、Pythonを使ってファイル名を一括変更する簡単な自動化プログラムを作りました。
Pythonはゲームを作るだけではありません。
パソコンで行っている、
同じ作業を何度も繰り返す
という作業を自動化することにも利用できます。
今回のプログラムでは、
フォルダーを指定
↓
ファイルを探す
↓
ファイルを順番に処理
↓
新しい名前を作る
↓
ファイル名を変更
という処理をPythonに任せました。
最初は小さな作業でも構いません。
「これ、毎回手作業でやるの面倒だな」
と思ったら、
「Pythonで自動化できないかな?」
と考えてみましょう。
Pythonを単なる「勉強するためのプログラミング言語」ではなく、自分の作業を楽にする道具として使えるようになると、できることが一気に増えていきます。

