数値を指定した桁数になるように前ゼロ埋めして文字列にする

bonlifeです。11月1日に引越をして大阪市民ではなくなりました…。ネットもつながらない陸の孤島で生活してます…。という話はさておき。

[programming][python]pythonで連番ファイルダウンローダ

この記事を見ていたら、以下のような処理が載ってました。

    def putplace(self, num):
        """
        ex) if self.place == 3, putplace(23) => "023"
                          == 4, putplace(23) => "0023"
        """
        s = str(num)
        while len(s) < self.place:
            s = "0" + s
        return s

数値を指定した桁数になるように前ゼロを付与して文字列にしています。このやり方だと文字列の連結が何度も発生するし、コードがちょっと冗長っぽい気がしたりして。

    def putplace(self, num):
        """
        ex) if self.place == 3, putplace(23) => "023"
                          == 4, putplace(23) => "0023"
        """
        return '%05d' % num

これで良いんじゃないかしら。どうかしら。
後、progressbarとか使うとコマンドラインでも気分が良い気がしましたが、気のせいかもしれません。

id:yattさんに指摘されて間違いに気付きました。zfill使えば良いじゃん!という指摘はごもっとも。それはそれとして、私が書きたかったのは以下のメソッドでしたよ…orz

    def putplace(self, num):
        """
        ex) if self.place == 3, putplace(23) => "023"
                          == 4, putplace(23) => "0023"
        """
        format = '%0' + str(self.place) + 'd'
        return format % num