diff options
Diffstat (limited to 'python/innocap_file_transfer.py')
| -rw-r--r-- | python/innocap_file_transfer.py | 48 |
1 files changed, 14 insertions, 34 deletions
diff --git a/python/innocap_file_transfer.py b/python/innocap_file_transfer.py index 5bac33c4..07149acb 100644 --- a/python/innocap_file_transfer.py +++ b/python/innocap_file_transfer.py @@ -1,54 +1,34 @@ +from io import BytesIO from serenitas.utils.env import DAILY_DIR -from csv import DictReader, DictWriter import datetime -import re -import argparse from csv_headers.citco import GIL, GTL -from io import StringIO from serenitas.utils.remote import SftpClient from serenitas.analytics.dates import prev_business_day -def extract_data_from_directory(date, file_type): +def concat_csv(file_type, date): match file_type: case "trade": file_tag = "innocap_serenitas_trades" case "instrument": file_tag = "i.innocap_serenitas" - file_directory = DAILY_DIR / str(date) - - pat = re.compile(f"^{file_tag}") - - l = [] - for f in [f for f in file_directory.iterdir() if f.is_file()]: - if match := pat.match(f.name): - with open(f) as fh: - reader = DictReader(fh) - for csv_dict in reader: - l.append(csv_dict) - - return l - - -def gen_csv(l, file_type, date, upload): - buf = StringIO() - todays_directory = DAILY_DIR / str(datetime.date.today()) - writer = DictWriter(buf, GTL if file_type == "trade" else GIL) - writer.writeheader() - writer.writerows(l) - buf = buf.getvalue().encode() fname = f"Innocap_ISOSEL_{file_type}_{date:%Y-%m-%d}.csv" - dest = todays_directory / fname - dest.write_bytes(buf) - if upload: - innocap_sftp = SftpClient.from_creds("innocap", folder="Innocap") - innocap_sftp.put(buf, fname) + buf = BytesIO() + buf.write((",".join(GTL if file_type == "trade" else GIL) + "\n").encode()) + for f in (DAILY_DIR / str(date)).iterdir(): + if f.is_file() and f.name.startswith(file_tag): + with f.open("rb") as fh: + next(fh) + buf.write(fh.read()) + return buf, fname def main(date, upload): for file_type in ("trade", "instrument"): - l = extract_data_from_directory(date, file_type) - gen_csv(l, file_type, date, upload) + buf, fname = concat_csv(file_type, date) + if upload: + innocap_sftp = SftpClient.from_creds("innocap", folder="Innocap") + innocap_sftp.put(buf, fname) if __name__ == "__main__": |
