ich habe einen für mich unerklärlichen Fehler gefunden.
Code: Alles auswählen
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import csv
import json
import logging
import os
import platform
import sys
from pathlib import Path
from PyQt5 import uic
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtWidgets import (QAbstractItemView, QApplication, QComboBox,
QCompleter, QFormLayout, QHBoxLayout,
QInputDialog, QLabel, QLineEdit, QMainWindow,
QMessageBox, QPushButton, QTableWidget,
QTableWidgetItem, QTextEdit, QTreeView,
QVBoxLayout, QWidget)
log_format = "%(levelname)s : %(asctime)s : Zeile: %(lineno)s : %(message)s"
logging.basicConfig(filename="infolog.log", level=logging.INFO,
format=log_format)
if platform.system() == "Linux":
listenpfad = str(Path().absolute()) + "/Listen/"
grafikpfad = str(Path().absolute()) + "/Grafiken/"
uipfad = str(Path().absolute()) + "/Ui/"
elif platform.system() == "Windows":
listenpfad = str(Path().absolute()) + "\\Listen\\"
grafikpfad = str(Path().absolute()) + "\\Grafiken\\"
uipfad = str(Path().absolute()) + "\\Ui\\"
zutatendatei = listenpfad + "Zutaten.json"
mengeneinheitendatei = listenpfad + "Mengeneinheiten.csv"
mainwindow_ui = uipfad + "mainwindow.ui"
mengeneinheiten = []
zutaten = {}
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
uic.loadUi(mainwindow_ui, self)
print(mengeneinheiten)
print(zutaten)
self.show()
def lade_aus_json(dateiname, zieldatei, loggingbezeichnung):
with open(dateiname, "r", encoding="utf-8") as jsonfile:
zieldatei = json.load(jsonfile)
logging.info("Die " + loggingbezeichnung + " wurde aus der Jsondatei " + \
" eingelesen.")
def lade_aus_csv(dateiname, zielliste, loggingbezeichnung):
with open(dateiname, "r", encoding="utf-8", newline="") as csvfile:
reader = csv.reader(csvfile, delimiter=";")
[zielliste.append(element[0]) for element in reader]
logging.info("Die " + loggingbezeichnung + " wurde aus der CSV Datei " + \
" eingelesen.")
def main():
lade_aus_json(zutatendatei, zutaten, "Zutaten")
lade_aus_csv(mengeneinheitendatei, mengeneinheiten, "Mengeneinheiten")
app = QApplication(sys.argv)
mainwindow = MainWindow()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
Die csv Datei erhält die Werte durch die Funktion "lade_aus_csv".
Rufe ich nun Variable in der Instanz der Klasse MainWindow auf, so enthält sie Daten.
Die json Datei erhält die Werte durch die Funktion "lade_aus_json".
Rufe ich aber diese Variable in der Instanz der Klasse MainWindow auf, so ist die Variable ohne Leer.
Warum greift nun genau die Instanz auf die Variable mit den leeren Werten zu und auch nur bei der json Datei?
Bitte um Erklärung.
Liegt in diesen Fall eine harte Kodierung vor, bzw. sind die Pfade richtig als Absolute Pfade gesetzt?
Vielen Dank!