31 lines
782 B
Python
31 lines
782 B
Python
# 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}')
|