2016-03-26 16 views
1

まあ私は2つの異なるスクリプトを書いています 最初のものはすべてのファイルからmd5ハッシュを取得しています もう1つのスクリプトは新しいファイルであるかどうかをチェックするエージェントです。 今私は、エージェントがすべてのMD52つのスクリプトをどのように組み合わせるか?

をファイルをチェックしても印刷にする必要があり、これは私のスクリプトです:

import os, time 
path_to_watch = "/root/PycharmProjects/untitled1" 
before = dict ([(f, None) for f in os.listdir (path_to_watch)]) 
while 1: 
    time.sleep (3) 
    after = dict ([(f, None) for f in os.listdir (path_to_watch)]) 
    added = [f for f in after if not f in before] 
    removed = [f for f in before if not f in after] 
    if added: print "Added: ", ", ".join (added) 
    if removed: print "Removed: ", ", ".join (removed) 
    before = after 

とMD5のためのための

import glob 
import os 
import hashlib 

work_path = '/root/PycharmProjects/untitled1/' 
filenames = glob.glob("/root/PycharmProjects/untitled1/*.exe") 
if len(os.listdir(work_path)) > 0: 
    for filename in filenames: 
     with open(filename, 'rb') as inputfile: 
      data = inputfile.read() 
      print hashlib.md5(data).hexdigest() 
else: 
    print '0' 

感謝をチェック秒1助けて !

+1

最初のファイルの機能を機能にカプセル化し、それをモジュールとしてインポートしようとしましたか? – TigerhawkT3

+0

いいえ私はそれを試しません – Xozu

+0

同時に両​​方のスクリプトを実行するか、新しいファイルを見つけて、見つかった新しいファイルごとにmd5ハッシュを取得しますか? –

答えて

1

どのように、ハッシュ生成から反復を減らす機能にそれをラップして、新しいファイルが発見された場合、それを呼び出すについて:

import time 
import glob 
import os 
import hashlib 

def md5(filename): 
    with open(filename, 'rb') as inputfile: 
     data = inputfile.read() 
     print filename, hashlib.md5(data).hexdigest() 

path_to_watch = "." 
before = os.listdir(path_to_watch) 
while 1: 
    time.sleep(3) 
    after = os.listdir(path_to_watch) 
    added = [f for f in after if not f in before] 
    removed = [f for f in before if not f in after] 
    if added: 
     print "Added: ", ", ".join(added) 
     for filename in added: 
      md5(filename) 
    if removed: 
     print "Removed: ", ", ".join(removed) 
    before = after 

はまた、コードからいくつかの不要な辞書のものを剥奪。

スクリプトの機能を維持しながら、文の数とデータ変換の回数を最小限に抑えることが課題です。同時に、Python Style Guideを見てみる価値があります)

+0

ありがとう!!!!! – Xozu

関連する問題