« 日記 |Main| 日記 »

« PythonワンライナーでBrainf*ckインタプリタ(第二部) | Python | How to make oneliner in Python? »

Pythonで指定したディレクトリの中を再帰的にdiff

Pythonで、指定した二つのフォルダの中身を全部比較して変更されたところを表示するスクリプトを書いてみましたが、diffに-rというずばりそういうことをするためのオプションがありましたorz

とりあえず、なんかの参考になるかも知れないので載せておきます。あと、これは「新しいプロジェクト」ディレクトリ内になくて「古いプロジェクト」ディレクトリ内にあるファイルは無視します。僕はそれでよかったので。diff -rの挙動がどうなのかは調べていません。

#
# diff between old project and new project
#

import difflib, os, sys
diff = difflib.Differ()

OLD_PATH = r"C:\Home\workspace\rel-visualizer\GRINEditAlpha\src" 
NEW_PATH = r"C:\Home\workspace\grinedit-app\src\main\java"

def getNewPath(path):
    return os.path.join(NEW_PATH, path)

def getOldPath(path):
    return os.path.join(OLD_PATH, path)

for (root, dirs, files) in os.walk(NEW_PATH):
    p = root[len(NEW_PATH)+1:]
    for filename in files:
        path = os.path.join(p, filename)

        data = os.popen(r"c:\cygwin\bin\diff %s %s" % (
            getOldPath(path),
            getNewPath(path))).read()

        if data != "":
            print path        
            print data

トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/336

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.