# 生成器与return的区别:
# return只能返回一次值,yield可以返回多次值
# yield到底做了什么?
# yield把函数变成生成器---》迭代器
from collections import Iterator
# 生成器就是一个函数,这个函数包含yield这个关键字
# def test():
# print("first")
# yield 1 #return 1
# print("second")
# yield 2
#
# g=test()
# print(g)
# # 看看是不是迭代器
# print(isinstance(g,Iterator))
#
# print(next(g))
# print(next(g))
# next(g) # 没有1输出是因为没有发返回值保存下来
# next(g)
# for i in g:
# next(i)
def countdown(n):
print('start countdown')
while n>0:
yield n
n-=1
print('done')
g=countdown(5)
# print(g)
# print(next(g))
# print(next(g))
# print(next(g))
# print(next(g))
# print(next(g))
# print(next(g))
# next(g)
for i in g:
print(i)
while True:
try:
print(next(g))
except StopIteration:
break
while True:
try:
print(next(g))
except StopIteration:
break
# 在nginx下,写下面的命令,可以得到文件内的内容
tail -f /var/log/nginx/access.log
echo 'hoeel' >> /var/log/nginx/access.log
# /user/bin/env python
import time
def tail(file_path):
with open(file_path,'r') as f:
f.seek(0,2)
line=f.readline()
if not line:
time.sleep(0.3)
print("=======>")
continue
else:
# print(line,end='')
yield line
# g=tail('a.txt')
# print(g)
# print(next(g))
# 要打印带error那行:
def grep(pattern,lines):
for line in lines:
if pattern in line:
print('\033[45m%s\033[0m' %line)
g=tail('a.txt')
grep('error',g)