[Python] 同じ日付に変更したファイルの一覧を表示するスクリプト
誰得?俺得!なスクリプトですが、下記のような用途で使えるかもしれません。
- アプリで書き換えられるファイル一覧が知りたい
- 特定の時期に変更(改造)されたファイル一式が知りたい
バージョン管理が無い環境ですね、分かります。
printEditFileList.py
#!/usr/bin/env python # -*- coding:utf-8 -*- import os, time from stat import * from optparse import OptionParser # 検索を始めるデフォルトディレクトリ path = './' # ファイルのリスト filelist = [] # 引数の解析 parser = OptionParser() parser.add_option("-d", "--dir", dest="directory", type="string", help=u"検索するディレクトリ") (options, args) = parser.parse_args() # オプションで指定された場合はディレクトリを変更する。 if(options.directory) : path = options.directory # 指定のディレクトリ以下のファイルとタイムスタンプのリストを作る。 for root, dirs, files in os.walk(path) : for file in files : filename = os.path.join(root, file) stat = os.stat(filename) timestamp = time.strftime("%Y/%m/%d", time.localtime(stat[ST_MTIME])) filelist.append((timestamp, filename)) # タイムスタンプでソート filelist.sort() # タイムスタンプが同じ日付が判断する。 def isSameDate(timestamp, oldtimestamp=[]) : if(not oldtimestamp) : oldtimestamp.append(timestamp) return False if(oldtimestamp[0] == timestamp) : return True else : oldtimestamp[0] = timestamp return False # タイムスタンプとファイルを表示する。 for timestamp, filename in filelist : if(isSameDate(timestamp)) : print ' ' + filename else : print timestamp + ' : ' print ' ' + filename
実行結果
> python printEditFileList.py 2009/10/23 : ./touch.py 2009/10/24 : ./complete.py 2009/10/27 : ./pydoc.bat 2010/02/22 : ./.svn\text-base\complete.py.svn-base ./.svn\text-base\pydoc.bat.svn-base ./.svn\text-base\touch.py.svn-base ./createEvidenceHTML.pyc 2010/02/23 : ./.svn\text-base\createEvidenceHTML.py.svn-base ./createEvidenceHTML.py 2010/03/07 : ./.svn\all-wcprops ./.svn\entries ./.svn\text-base\printEditFileList.py.svn-base ./printEditFileList.py
ヘルプの表示
> python printEditFileList.py -h Usage: printEditFileList.py [options] Options: -h, --help show this help message and exit -d DIRECTORY, --dir=DIRECTORY 検索するディレクトリ
勉強用に、引数の解析とかもしてたりします。
後、静的変数が使えない(?)ようなので、無理やりデフォルト引数にリストを指定して実現してたりします。
リファクタリングはいつか・・・orz