末尾に連番が付いているファイルを連番を無視した名称でディレクトリに振り分けるスクリプト

a01.jpg
a02.jpg
a03.jpg
b01.jpg
b02.jpg

というファイルがあるときに

a
b

というディレクトリを作成して振り分けるスクリプト。
os, sys, shutilの練習。

#!/usr/bin/env python

import os 
import sys
import shutil

def get_fn_set(target_dir_name):
    file_names = os.listdir(target_dir_name)
    fn_set = set()
    for file_name in file_names:
        if not file_name.endswith('.jpg'):
            continue
        # 末尾2桁を無視するのでセグメントは6
        segment = -6 
        fn_set.add(file_name[0:segment])
    return fn_set

def move_to_uniq_dir(target_dir_name, fn_set):
    file_names = os.listdir(target_dir_name)
    os.chdir(target_dir_name)
    for uniq_fn in fn_set:
        if uniq_fn == '':
            continue
        os.mkdir(uniq_fn)
        for file_name in file_names:
            if file_name.startswith(uniq_fn):
                shutil.move(file_name, uniq_fn)

if __name__ == '__main__':
    fn_set = get_fn_set(sys.argv[1])
    move_to_uniq_dir(sys.argv[1], fn_set)