example

importsys

classReader(object):

def__init__(self):

self.data =self._read()

@staticmethod

def_read():

data = []

withopen('data.txt')asfobj:

forlineinfobj:

data.append(tuple(line.split()))

returndata

@staticmethod

def_read(self):

returntuple(tuple(line.split())forlineinopen('data.txt'))

defread_forever(fobj):

importtime

whileTrue:

line = fobj.readline()

if notline:

time.sleep(0.1)

continue

yieldline

deffilter_comments(lines):

forlineinlines:

if notline.strip().startswith('#'):

yieldline

defget_number(lines):

forlineinlines:

yieldint(line.split()[-1])

definit_coroutine(func):

importfunctools

functools.wraps(func)

definit(*args, **kwargs):

gen = func(*args, **kwargs)

next(gen)

returngen

returninit

defread_forever(fobj, target):

importtime

whileTrue:

line = fobj.readline()

if notline:

time.sleep(0.1)

continue

target.send(line)

@init_coroutine

deffilter_comments(target):

target = {'debug':lambdaline:sum(line)}

while(True):

line =yield

if notline.strip().startswith('#'):

target.send(line)

@init_coroutine

defget_number(target):

whileTrue:

line =yield

level, number = line.split(':')

number =int(number)

target[level].send(number)

@init_coroutine

deffatal():

sum_ =0

whileTrue:

value =yield

sum_ += value

sys.stdout.write("FATAL: %d"% sum_)

sys.stdout.flush()

@init_coroutine

defdebug():

sum_ =0

whileTrue:

value =yield

sum_ += value

sys.stdout.write("DEBUG: %d"% sum_)

sys.stdout.flush()

@init_coroutine

deferror():

sum_ =0

whileTrue:

value =yield

sum_ += value

sys.stdout.write("ERROR: %d"% sum_)

sys.stdout.flush()

TARGETS = {'DEBUG': debug(),

'ERROR': error(),

'FATAL': fatal()}

defshow_sum(file_name='out.txt'):

read_forever(open(file_name), filter_comments(get_number(TARGETS)))

defshow_num_1(file_name):

lines = Reader.read_forever(open(file_name))

sum =0

importsys

try:

fornuminReader.get_number(Reader.filter_comments(lines)):

sum += num

sys.stdout.write('sum: %d'% sum)

sys.stdout.flush()

exceptKeyboardInterrupt:

print'sum', sum

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容