年末年始のお休みに入りました。仕事がないとPythonがはかどりますね。最近「もしかして、自分がやりたいことを実現するのはPythonではなくReactやnode.jsなのでは?」という不安が頭をよぎっているのですが、どんな言語であっても、一定のレベルまでマスターすることには意味があるはずです。たぶん。
なにより、楽しいので別にいいです。
なのですが、このたび、はじめて挫折することにしました。
つまづいた箇所は、いつもの本『退屈なことはPythonにやらせよう』の演習プロジェクトの箇所。こんなのです。
9.7.3 連番の飛びを埋める
ひとつのフォルダの中で、sample001.txt、sample002.txtなどの、指定した接頭辞を持つ連番ファイルを探し出し、連番が飛んでいる箇所(例えばsample001.txtとsample003.txtがあって、sample002.txtがない)を見つけるプログラムを書きなさい。このとき、番号の飛びを埋めるように、後に続くファイルの名前を変更してください。
連番が飛んでいる箇所を見つけるところまでは、できたのです。こんな風に書きました。
フォルダの中で連番が飛んでいる箇所を見つける : GitHub Gist
実行すると、例えば以下のような感じで、抜けているところを教えてくれます。
sample001.txtはあります。
sample002.txtはあります。
sample003.txtはあります。
ない! sample004.txt
sample005.txtはあります。
sample006.txtはあります。
ない! sample007.txt
ない! sample008.txt
ない! sample009.txt
sample010.txtはあります。
しかし!
ここから「番号の飛びを埋めるように、後に続くファイルの名前を変更」というのが、難しかった。
いろいろと頭をひねったし、もう観念して回答例も見たのですが、どうも腑に落ちない。
そこで、しばし長考に入りまして。
このまま、ここが理解できるまで考え続けるか。
そもそも、例題のように、ファイル名を変えてまで連番を維持する状況って、今までなかった気がする。
それに、回答例も、ひどく高度というか、ややこしい気がする。
ここを完全習得すると、プログラミングスキルのレベルがグンと上がるのだろうか? やりたいことをより自由自在にやれるようになるのだろうか?
ここの章の肝は、shutilだ。ファイル名変更はshutil.moveだ。
それはもうわかったから、とりあえず、ここは飛ばしても致命的ではないのではないか。
ブログにこうやって「できませんでした!」と書いておいて、いつかレベルが上ったとき、またチャレンジすればいいのではないか?
それとも、この考えは逃げなのか。罠なのか。
こここそが非常に重要なロジック組みの部分で、ここはなんとしても習得しておくべき考え方の部分なのか。
しばし頭を抱えたし、悔しくもありましたが……
何日も何日も同じところでつまづいたままで、モチベーションそのものが落ちてしまうことのリスクの方が高いと考え、ここは戦略的撤退、飛ばし、次にGo、という判断を下しました。
みてろよ9.7.3。
いつか、何も考えなくてもスラスラ解決するコードを書けるようになって、もどってきてやる。たぶん……