繁体   English   中英

如何将 2 个脚本组合在一起?

[英]How to combine 2 scripts together?

好吧,我编写了 2 个不同的脚本,第一个脚本只是从 .exe 的所有文件中获取 md5 哈希值,另一个脚本是某个代理,每 3 秒检查一次目录中是否有新文件。 现在我需要让代理检查文件并打印每个 md5

这是我的脚本:

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'

谢谢您的帮助 !

如何减少哈希生成的迭代,将其包装到一个函数中并在找到新文件时调用它:

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 风格指南;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM