ペンドリブン

1985年生まれ 仕事・家庭・etc. 雑記

*

二つのフォルダにある同じファイル名の更新日付を比較する

      2016/01/05

タイトルの通り、比較元のフォルダで比較先のフォルダよりも更新日付が新しいものをピックアップしたかったので、かなり久しぶりに python2.7 で書いてみた。

  

実際はこのファイル比較を行った後、新しいく更新されているファイルに紐づく特定の jenkins の job をリモート実行させるというところまでやっている。

import os
import time
import datetime
import glob

A_DIR = "比較元のファイルがあるディレクトリのパス"
B_DIR = "比較先のファイルがあるディレクトリのパス" 

TODAY = datetime.datetime.today()
TODAY_YMD = TODAY.strftime("%Y%m%d")

def main():
    a_files = glob.glob(A_DIR + "*.dll")
    b_files = glob.glob(B_DIR + "*.dll")

    a_dic = {}
    new_dll_list = []

    f = open("log/%s.log" % TODAY_YMD, "w")

    for a_f in a_files:
        stat = os.stat(os.path.join(A_DIR ,a_f))
        last_modified = stat.st_mtime
        dt = datetime.datetime.fromtimestamp(last_modified)
        a_dic[a_f.split("\\")[-1]] = dt.strftime("%Y-%m-%d %H:%M:%S")

    for b_f in b_files:

        b_f_name = b_f.split("\\")[-1]
        if a_dic.get(b_f_name) == None:
            continue

        a_datetime = a_dic[b_f_name]

        stat = os.stat(os.path.join(B_DIR ,b_f_name))
        last_modified = stat.st_mtime
        dt = datetime.datetime.fromtimestamp(last_modified)
        b_datetime = dt.strftime("%Y-%m-%d %H:%M:%S")

        if a_datetime > b_datetime:
            new_dll_list.append(b_f_name)
            f.write("更新日付が新しいファイル:%s\n\r" % b_f_name)

    f.close()

if __name__ == "__main__":
    main()

 - プログラム