Moved CSV save function.

This commit is contained in:
2021-10-24 14:25:14 +02:00
parent 1144e5fae9
commit addb064f71
3 changed files with 25 additions and 15 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ import src.csv_logging as log
from src.magnetometer import MagnetometerProxy
from src.user_interface import HelmholtzGUI
from src.socket_control import SocketInterfaceThread
from src.utility import ui_print
from src.utility import ui_print, save_dict_list_to_csv
def program_start():
+4 -13
View File
@@ -27,7 +27,7 @@ import src.config_handling as config
import src.csv_logging as log
from src.calibration import AmbientFieldCalibration, CoilConstantCalibration, MagnetometerCalibration
from src.exceptions import DeviceAccessError
from src.utility import ui_print
from src.utility import ui_print, save_dict_list_to_csv
import src.helmholtz_cage_device as helmholtz_cage_device
# define font styles:
@@ -845,7 +845,7 @@ class CalibrateAmbientField(Frame):
ui_print("Error: Failed to export non-existent calibration data.")
return
self.save_to_csv('coil_constant_calibration.csv', self.coil_constant_raw_data)
save_dict_list_to_csv('coil_constant_calibration.csv', self.coil_constant_raw_data, query_path=True)
ui_print("Saved calibration results to coil_constant_calibration.csv.")
def save_to_csv_ambient_field(self):
@@ -853,19 +853,9 @@ class CalibrateAmbientField(Frame):
ui_print("Error: Failed to export non-existent calibration data.")
return
self.save_to_csv('ambient_field_calibration.csv', self.ambient_field_raw_data)
save_dict_list_to_csv('ambient_field_calibration.csv', self.ambient_field_raw_data, query_path=True)
ui_print("Saved calibration results to ambient_field_calibration.csv.")
def save_to_csv(self, filename, data):
with open(filename, mode='w', newline='') as csv_file:
fieldnames = data[0].keys()
csv_writer = csv.DictWriter(csv_file, fieldnames=fieldnames, delimiter=',', quotechar='"',
quoting=csv.QUOTE_NONNUMERIC)
csv_writer.writeheader()
for row in data:
csv_writer.writerow(row)
def save_and_apply_ambient_calibration(self):
if self.ambient_field_result is not None:
ui_print("Saving ambient field calibration data")
@@ -886,6 +876,7 @@ class CalibrateAmbientField(Frame):
ui_print("Reinitializing devices...")
g.CAGE_DEVICE.reconnect_hardware_async() # setup everything with the defaults
class CalibrateMagnetometer(Frame):
def __init__(self, parent, controller):
Frame.__init__(self, parent)
+20 -1
View File
@@ -1,4 +1,5 @@
from tkinter import END
import csv
from tkinter import filedialog
import src.globals as g
@@ -13,3 +14,21 @@ def ui_print(*content):
else:
# if window is not open, do normal print
print(output)
def save_dict_list_to_csv(filename, data, query_path=False):
"""Creates a csv file under the specified path containing one row for each dict in the list 'data'.
The file receives a header containing the keys of the first dict entry.
Each dict should use the same keys."""
if query_path:
filename = filedialog.asksaveasfilename(initialfile=filename, title="Select csv save location...",
filetypes=(("CSV", "*.csv"),))
with open(filename, mode='w', newline='') as csv_file:
fieldnames = data[0].keys()
csv_writer = csv.DictWriter(csv_file, fieldnames=fieldnames, delimiter=',', quotechar='"',
quoting=csv.QUOTE_NONNUMERIC)
csv_writer.writeheader()
for row in data:
csv_writer.writerow(row)