アニメーションファイルを作る際、画像ファイルを連番で保存することがあると思います。
連番とは、言葉の通り連続した番号です。
例として100までの連番は、1は、001と0を埋める必要がありました。
そうでないと、ファイルをソートした時に、思った通りに並んでくれません。
そのソートした順番でアニメーションファイルは作られるため、0を埋めるのは必須です。
方法
例として、100枚以上の画像ファイルを0で埋めていきたいと思います。
条件分岐
一番最初に思いつくプログラムかと思います。
あとで紹介するzfill関数を知らなった私は、このように書いていました。
sheet = 1
while sheet <= 枚数の上限:
#描画
if sheet < 10:
plt.savefig("test-00" + str(sheet) + ".png")
elif sheet < 100:
plt.savefig("test-0" + str(sheet) + ".png")
else:
plt.savefig("test-" + str(sheet) + ".png")
sheet += 1
長いコードになりました。
もちろん、画像が1000枚を超えるようなら、もう一つ条件分岐をしないといけません。
zfill関数
組み込み関数であるため、モジュールをインポートする必要もありません。
sheet = 1
while sheet <= 枚数の上限:
zero_sheet = str(sheet).zfill(3)
plt.savefig("test-"+ zero_sheet + ".png")
zfill関数の引数ですが、枚数を表す桁数を入れます。
今回の例では、3桁で表すため、3です。
zfill関数の引数を実際の枚数より少ない桁数で指定した場合、枚数sheetがそのままzero_sheetになります。
ドット(.)の前に対象の変数を指定しますが、文字列のみ対象ですので、整数型を文字列型に変換しています。
zfill関数を用いた方が断然コード量が減りました。
まとめ
Pythonでファイル名を連番にしたいならzfill関数
str.zfill(width)
数値文字列strを左側をゼロ詰めし、桁数widthの文字列で返します。