# follow.py
import os
import time
def follow(filename):
'''
Generator that produces a sequence of lines being written at the end of a file.
'''
f = open(filename, 'r')
f.seek(0,os.SEEK_END)
while True:
line = f.readline()
if line == '':
time.sleep(0.1) # Sleep briefly to avoid busy wait
continue
yield line
# Example use
if __name__ == '__main__':
import report
portfolio = report.read_portfolio('../../Data/portfolio.csv')
for line in follow('../../Data/stocklog.csv'):
row = line.split(',')
name = row[0].strip('"')
price = float(row[1])
change = float(row[4])
if name in portfolio:
print(f'{name:>10s} {price:>10.2f} {change:>10.2f}')