Pythonを含むプログラミング学習は、学習そのものを目的としてしまうと、
なかなか続かない人も多いのではないでしょうか。

自分もそのひとりでした。。
文法を覚えても身についていないのが自分でも分かっていました。
こちらの記事にも書いたように、まずは何か実現したいことを見つけて、
その実現に向けて取り組んだ方が、効果的にプログラミングを学ぶことができます。
とはいえ、なかなか実現したいことが思いつかない、、ということも多いと思います。
この記事では、実現したいことが思いつかないときに、アイデアのひとつとして見てもらえるようにまとめました。
内容をみてもらってサンプルコードでもプログラムを組んで動かすことができたら、
確実にプログラミング学習としての一歩は踏み出せています。
身近な面倒なことを思い浮かべてみる
ネットサーフィンやPCを操作している中で、何度も繰り返して面倒だな、、とか、
こんなことがしたいんだけど、、とか、思ったりしたことはないでしょうか。
例えば、
- フォルダ内のファイル名を一括変換したい
- インターネット上のファイルをひとつずつダウンロードするのが面倒
といった、手動でもなんとかなるけど、ちょっと面倒な作業がたくさん転がっています。
これらはPythonで少しプログラムを組むだけで簡単に実現することができます。
実際のコードを交えながら説明したいと思います。

ちょっと面倒な作業をプログラム化する
実際にちょっと面倒な作業をプログラムを組んで実行してみましょう。
本記事ではWindows環境を想定していますが、Linux環境でも同様に実行できると思います。

フォルダ内のファイル名を一括変換する
まずは、カレントフォルダ内の jpgファイルのファイル名を1から順番に揃えたい場合を想定します。
サンプルコードはこちらです。
import os
FID = 1
for entry in os.scandir("."):
if entry.is_file() and entry.name.lower().endswith(".jpg"):
from_name = entry.name
to_name = "%05d.jpg" % FID
os.rename(from_name, to_name)
print("rename: %s -> %s" % (from_name, to_name))
FID = FID + 1
実行する場合は、一括変換を行いたいフォルダに「rename_files.py」を配置して、
「python rename_files.py」を実行します。
実行結果例のように、バラバラだったファイル名を一括変換してくれます。
> python rename_files.py
rename: 20200110233327.jpg -> 00001.jpg
rename: 20200115001027.jpg -> 00002.jpg
rename: 22048536_s.jpg -> 00003.jpg
rename: blue-background.jpg -> 00004.jpg
rename: D0005310167_00000_S_001.jpg -> 00005.jpg
rename: Default_of_0_0549c83f-f4a0-4d67-98bf-190dd7ecbaf7_1.jpg -> 00006.jpg
rename: Default_of_0_4993de3d-ef44-4b2f-b71f-e1718f86d73b_1.jpg -> 00007.jpg
rename: Default_of_1_3f833f78-0c47-4ec6-9573-849cacb1ec32_1.jpg -> 00008.jpg
rename: Default_of_1_ff9aa285-120e-4cac-98e2-fd1807a07d15_1.jpg -> 00009.jpg
rename: IMG_0017.jpg -> 00010.jpg
rename: IMG_0018.jpg -> 00011.jpg
rename: IMG_0020.jpg -> 00012.jpg
rename: IMG_0023.jpg -> 00013.jpg
:
このスクリプトを応用させて、
- カレントフォルダ以外のフォルダ名を指定するようにしたい
- フォルダを階層的に辿って一括変換したい
- ファイル名をファイル作成日順にしたい
などといった、より自分の希望にあった内容に書き換えていくことで、
自分の実現したいことをプログラミングすることができますので、
学習のモチベーションを維持しながら取り組むことができます。

インターネット上のファイルをダウンロードする
インターネット上のURLを指定してダウンロードするところまでを、Pythonで一括処理することもできます。
まとめてダウンロードしたいファイルのURLを「dl.txt」に一行ずつ書いておきます。
画像の場合は、ブラウザ上の右クリックから「画像アドレスをコピー」でURLを保存できます。

dl.txtは最後の行に改行を入れるのを忘れずに!
https://infomisc.blog/wp-content/uploads/2025/02/image-17-376x212.png
https://infomisc.blog/wp-content/uploads/2021/10/20200120013705.png
https://infomisc.blog/wp-content/uploads/2021/11/D23E865A-2FFA-45C5-8F22-7DAE170442A7-e1636557005357.jpeg
サンプルコードはこちらです。
import requests
with open('dl.txt') as dlf:
for line in dlf:
furl = line[:-1]
fname = furl.split('/')[-1]
res = requests.get(furl)
with open(fname, "wb") as f:
print("download: %s -> %s" % (furl, fname))
f.write(res.content)
f.close()
「python rename_files.py」を実行すると、「dl.txt」に記載されたURLのファイルを取得して、
カレントフォルダに保存してくれます。
> python download.py
download: https://infomisc.blog/wp-content/uploads/2025/02/image-17-376x212.png -> image-17-376x212.png
download: https://infomisc.blog/wp-content/uploads/2021/10/20200120013705.png -> 20200120013705.png
download: https://infomisc.blog/wp-content/uploads/2021/11/D23E865A-2FFA-45C5-8F22-7DAE170442A7-e1636557005357.jpeg -> D23E865A-2FFA-45C5-8F22-7DAE170442A7-e1636557005357.jpeg

まとめ
この記事は実現したいことが思いつかないときに、アイデアのひとつとして見てもらえるようにまとめました。
このようなアイデアは考え出すとたくさん出てくると思いますので、
まずは簡単なところからプログラムを組んでみることをおススメします。
実際にプログラムを組んでみると、色々なところでつまずくと思いますが、
自身で調べて解決できた方が楽しいですし、確実に自分の力になります。

コメント