From 899cdbc4fa6d267e1db23e81ab2a897c81a93b53 Mon Sep 17 00:00:00 2001 From: m1ngsama Date: Sun, 8 Dec 2024 15:45:00 +0800 Subject: [PATCH] Add data export functionality (JSON and CSV) --- .gitignore | 1 + data_exporter.py | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 data_exporter.py diff --git a/.gitignore b/.gitignore index a087583..80b5f9a 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ venv/ .DS_Store logs/ *.log +exports/ diff --git a/data_exporter.py b/data_exporter.py new file mode 100644 index 0000000..e895430 --- /dev/null +++ b/data_exporter.py @@ -0,0 +1,40 @@ +""" +Data export functionality +""" + +import json +import csv +from datetime import datetime + + +class DataExporter: + def __init__(self, output_dir='exports'): + self.output_dir = output_dir + + def export_to_json(self, data, filename=None): + """Export data to JSON format""" + if filename is None: + filename = f"tracker_data_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json" + + filepath = f"{self.output_dir}/{filename}" + + with open(filepath, 'w') as f: + json.dump(data, f, indent=2) + + return filepath + + def export_to_csv(self, data, filename=None): + """Export data to CSV format""" + if filename is None: + filename = f"tracker_data_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv" + + filepath = f"{self.output_dir}/{filename}" + + if isinstance(data, list) and len(data) > 0: + keys = data[0].keys() + with open(filepath, 'w', newline='') as f: + writer = csv.DictWriter(f, fieldnames=keys) + writer.writeheader() + writer.writerows(data) + + return filepath