schedule2019-03-06

エビデンスのためPythonでファイル名を連番にリネームする

制作物のエビデンスをスクリーンショットで残すプロジェクトはままあります。 スクリーンショットのファイル名も連番にするようにと指定があると面倒です。

退屈なことはPythonにやらせようということでリネームするスクリプトを作成しました。

環境

  • Python3.7
  • Windoes10

仕様

エクセルの試験書に合わせてスクリーンショットをまとめていく。

.\\{シート名}\\{項目番号}\\{項目番号}_{連番}.png

このようなルールで採番したファイル名とする。

項番毎にフォルダがあり、その中に関連するスクリーンショットを入れる。 スクリーンショットは{項目番号}_{連番}.pngの名前とする。

.\\機能1\\11\\11_1.png
.\\機能1\\12\\12_1.png
.\\機能1\\12\\12_2.png
.\\機能1\\13\\13_1.png
.\\機能1\\13\\13_2.png
.\\機能1\\13\\13_3.png

ソースコード

フォルダ構成を整え、スクリーンショットをフォルダに突っ込んだ後に一括処理する。

import os
import glob

# シート名
root_dir = '.\\機能1\\'

# 項番のディレクトリを取得
dir_list = glob.glob(root_dir + '*')

for no in dir_list:
    # 項番のディレクトリを取得
    file_list = glob.glob(no + '\\*.png')
    # スクリーンショットの取得順に応じてソート
    file_list.sort()
    for i, path in enumerate(file_list):
        # path = '.\\機能1\\7\\Screenshot_20190306-180830.png'
        arr = path.split('\\')
        # arr = ['.', '機能1', '7', 'Screenshot_20190306-180830.png']
        arr[3] = f'{arr[2]}_{str(i+1)}.png'
        new_path = '\\'.join(arr)
        print(new_path)
        # .\15\7\7_1.png
        # リネーム
        os.rename(path, new_path)

コメント通りに処理をしています。

  • globはディレクトリ内のファイルやフォルダ名をリスト化
  • os.rename(path, new_path)でリネーム

正直、もっと上手い書き方があるがこれで事足りたので良しとする。

エビデンスについて

正直エビデンスを残すため作業は徒労感があり嫌いだ。 膨大なスクリーンショットやテストケースの試験書はお客さんもすぐには見ていない。

それでも、試験書とエビデンスを残す意味はある。 問題があればその個所を確認して判断できる。

自動化したテスト結果で十分かもしれない。 ただ、日本語でまとめられた試験項目と一目でわかるスクリーンショットは、ITに疎い発注側でも理解しやすい利点がある。

上手くまとまらなかったので、下記の記事に主張は任せる。