import os import os.path import csv import psycopg2 import pdb if os.name =='nt': root = "//WDsentinel/share/CorpCDOs" elif os.name == 'posix': root = '/home/share/CorpCDOs' conn = psycopg2.connect(database="ET", user="et_user", password="Serenitas1", host="192.168.1.108") cursor = conn.cursor() def cusips_from_dealname(dealname, curr = cursor): curr.execute("SELECT \"Deal Cusip List\" from latest_clo_universe " " where dealname = %s", (dealname,)) return curr.fetchone()[0] prog = re.compile("\((.*)\)") def convert_float(string): string = string.replace(",","") if prog.match(string): return - float(prog.match(string).group(1)) else: return float(string) fields = ["Price", "WAL", "Market Value", "Modified Duration"] data = {} n_scenarios = 100 for field in fields: data[field] = [] for dealname in ["oceant2"]: tranches = os.listdir(os.path.join(root, "Scenarios", "Prices", dealname)) for tranche in tranches: with open(os.path.join(root, "Scenarios", "Prices", dealname, tranche)) as fh: csvinput = csv.reader(fh, dialect = 'excel-tab') for line in csvinput: if line[1] in fields: data[line[1]].append(map(convert_float, line[2:-1])) for field in fields: with open(os.path.join(root, "Scenarios", "Prices", "{0}-{1}.csv".format(dealname, field)), "wb") as fh: csvoutput = csv.writer(fh) csvoutput.writerow([tranche.split(",")[0] for tranche in tranches]) for i in range(n_scenarios): csvoutput.writerow([data[field][j][i] for j in range(len(tranches))]) cursor.close() conn.close()