0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python でファイル名をなるべく連番になりつつもユニークにしたいメモ

Posted at

背景

画像処理とか機械学習で, img-000.png, img-001.png ... などとファイル名を連番で(or 既存ファイル名を上書きしないようにユニークな名前にしたい)作りたい.

imageio とか pytorch あたりにユーティリティ関数としてありそうですが, どうも無さそうなので自作します!

方法

現状はファイル名を見て, 存在するかどうかで処理するしかなさそうです.

今回, 最新ファイル名は同じにしたいので, たとえば既存ファイルがあったら, それを test-0000.png, test-0001.png, ... にリネームというふうにしてみました.

import os
from pathlib import Path

def rename_existing_file(filename):

    p = Path(filename)

    if p.exists():

        ftup = os.path.splitext(filename)

        # find new filename
        i = 0
        while i < 1000:
            target_name = "{}-{:0>4}{}".format(ftup[0], i, ftup[1])

            target_p = Path(target_name)
            if target_p.exists():
                print("target {} exists".format(target_name))
                i = i + 1
                continue
            else:
                break


        # TODO: print warn when i == 1000
        # rename
        p.rename(target_p)
        print("{} renamed to {}".format(p, target_p))



if __name__ == '__main__':
    fname = "test.png"
    rename_existing_file(fname)

ファイル数が多量の場合

1 万ファイルとかになると, ひとつづつファイルのチェックするのもコストになりそうですから, ディレクトリ内のファイル数を見て連番名を決めてみるとかの対応にしたほうがよさそうです!

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?