From 69ed98e64b23a688fe3ee6d510dcef35ebf4a3d2 Mon Sep 17 00:00:00 2001 From: Yannik Schmidt Date: Thu, 18 Mar 2021 20:54:31 +0100 Subject: [PATCH] do not abort on value error in dbf (warning only) --- src/main/python/input_backend.py | 18 +++++++++++++++--- src/main/python/main.py | 4 +++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/python/input_backend.py b/src/main/python/input_backend.py index 00e8842..14c7229 100644 --- a/src/main/python/input_backend.py +++ b/src/main/python/input_backend.py @@ -211,7 +211,7 @@ def read_in_file(path, backend=None, outsideData=False, plotOutsideTemp=True, elif backend != None: backend(path) elif path.endswith(".DBF") or path.endswith(".dbf"): - dbfread(path,datapoints,pt,ph,pd) + dbfread(path,datapoints,pt,ph,pd, qtTextBrowser) elif path.endswith(".xls") or path.endswith(".XLS"): csvread(path,datapoints,pt,ph,pd,qtTextBrowser) elif path.endswith(".txt"): @@ -233,8 +233,20 @@ def read_in_file(path, backend=None, outsideData=False, plotOutsideTemp=True, return datapoints -def dbfread(path,datapoints,pt,ph,pd): - for record in DBF(path): +def dbfread(path, datapoints, pt, ph, pd, qtTextBrowser): + print("lol") + dbfIterator = iter(DBF(path)) + print("lol2") + while True: + record = None + try: + record = next(dbfIterator) + except ValueError as e: + qtTextBrowser.append("Warning: Fehlerhafter Eintrag wird übersprungen") + continue + except StopIteration: + break + parse_line(datapoints, record, 'DATETIME', [ ('TEMPCELS',pt), ('HUMIDITY',ph), ('DEWCELS',pd) ], timeutils.time_from_dbf) diff --git a/src/main/python/main.py b/src/main/python/main.py index 62589f4..dcb1685 100755 --- a/src/main/python/main.py +++ b/src/main/python/main.py @@ -16,6 +16,7 @@ import datetime as dt import input_backend import plot +import traceback import config_parse as cp class WidgetGallery(QDialog): @@ -242,9 +243,10 @@ class WidgetGallery(QDialog): qtTextBrowser=self.infoTextBox) except Exception as e: errorBox = QMessageBox(self) + errorBox.setStyleSheet("QLabel{min-width: 700px;}"); errorBox.setAttribute(PyQt5.QtCore.Qt.WA_DeleteOnClose) errorBox.setText(self.localization.error_read_in) - errorBox.setDetailedText(str(e)) + errorBox.setDetailedText(traceback.format_exc()) errorBox.show() return