filter を用いたファイル名の一括変換
元ネタ: ファイル名の一括変換
この手の問題は高階関数を使ったら簡単にできそう、、、と思っていざ書いてみたら、意外と難しかったです。正規表現オブジェクトをグローバル変数にしているのが何か気持ち悪い(- -#
自己評価としては「もう少しがんばりましょう!」な感じです。
#!/bin/env python """ change filename """ import re def change_filename(l): match = ptrn.search(l) date = match.groups() print '%s%s%02d%02d.%s' % ( hdr, year, int(date[0]), int(date[1]), l.rsplit('.')[-1]) if __name__ == '__main__': L = [] ptrn = re.compile(r'(\d+).*?(\d+)') hdr = 'FR' year = '2009' while True: s = raw_input() if len(s) == 0: break L.append(s) filter(change_filename, L)
実行結果。
$ python change_filename.py まいにちフランス語_4月13日放送分.mp3 まいにちフランス語_4月14日放送分.mp3 まいにちフランス語_4月15日放送分.mp3 FR20090413.mp3 FR20090414.mp3 FR20090415.mp3