1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
import os
exp='ps aux|grep '
proc='httpd'
class SearchProccess(object):
def __init__(self):
self.expression = None
self.procces = None
def require(self,*types):
"""Return a decorator function that requires specified types.
types -- tuple each element of which is a type or class or a tuple of
several types or classes.
Example to require a string then a numeric argument
@require(str, (int, long, float))
will do the trick"""
def deco(func):
"""Decorator function to be returned from require(). Returns a function
wrapper that validates argument types."""
def wrapper (*args):
"""Function wrapper that checks argument types."""
for a, t in zip(args, types):
if type(t) == type(()):
# any of these types are ok
msg = """%s is not a valid type. Valid types:\n%s"""
assert sum(isinstance(a, tp) for tp in t) > 0, msg % (a, '\n'.join(str(x) for x in t))
assert isinstance(a, t), '%s is not a %s type' % (a, t)
return func(*args)
return wrapper
return deco
@require(str)
def setExpression(self, expression):
self.expression = expression
@require(str)
def setProcces(self, procces):
self.procces = procces
def search(self):
return os.popen( self.expression+self.procces)
apache = SearchProccess()
apache.setExpression(exp)
apache.setProcces(proc)
for line in apache.search():
print line |
Partager