33 lines
848 B
Python
33 lines
848 B
Python
# pcost.py
|
|
|
|
import csv
|
|
def portfolio_cost(filename):
|
|
'''
|
|
Computes the total cost (shares*price) of a portfolio file
|
|
'''
|
|
total_cost = 0.0
|
|
|
|
with open(filename) as f:
|
|
rows = csv.reader(f)
|
|
headers = next(rows)
|
|
for rowno, row in enumerate(rows, start=1):
|
|
record = dict(zip(headers, row))
|
|
try:
|
|
nshares = int(record['shares'])
|
|
price = float(record['price'])
|
|
total_cost += nshares * price
|
|
# This catches errors in int() and float() conversions above
|
|
except ValueError:
|
|
print(f'Row {rowno}: Bad row: {row}')
|
|
|
|
return total_cost
|
|
|
|
import sys
|
|
if len(sys.argv) == 2:
|
|
filename = sys.argv[1]
|
|
else:
|
|
filename = input('Enter a filename:')
|
|
|
|
cost = portfolio_cost(filename)
|
|
print('Total cost:', cost)
|