Seite 1 von 1
Excel Datenabgleic
Verfasst: Dienstag 14. November 2023, 16:26
von FloRasp
Hallo zusammen,
ich habe ein Programm zum Excel-Abgleich bekommen und ich kann die Excel iwie nicht in das Programm hochladen bzw. aufrufen. Bibliotheken sind importiert und die Excel ist im gleichen Ordner wie das Programm.
Kann mir jemand helfen wie ich die Excel importiere?
Als ausgabe erhalte ich:
C:\Users\flori\AppData\Local\Programs\Python\Python311\python.exe C:\Users\flori\Desktop\P3-DATENPOOL-Validation\main.py
Arguments count: 1
Kein DATENPOOL P3 Export Excel-File (.xlsx) angegeben.
Process finished with exit code 1
Code beginnt wie folgt:
import sys
import blacklist as bl
import excelproxy as e
import helper as h
import object_text_parser as p
import tabularlogger as l
import validation as v
datenpoolP3ExcelExport = (".xlsx")
if __name__ == "__main__":
print(f"Arguments count: {len(sys.argv)}")
if len(sys.argv) < 2:
print("Kein DATENPOOL P3 Export Excel-File (.xlsx) angegeben.")
sys.exit(1)
elif len(sys.argv) > 2:
print("Nur ein Argument erwartet: DATENPOOL P3 Export Excel-File (.xlsx) ")
sys.exit(1)
else:
datenpoolP3ExcelExport = str(sys.argv[1])
Re: Excel Datenabgleic
Verfasst: Dienstag 14. November 2023, 16:59
von noisefloor
Hallo,
das Skript erwartet, dass du den Namen der Exceldatei als Argument ans Skript übergibst.
Also:
Gruß, noisefloor
Re: Excel Datenabgleic
Verfasst: Dienstag 14. November 2023, 17:59
von Sirius3
Zum Parsen von Commandozeilenargumenten sollte man argparse benutzten, das liefert dann gleich schöne Hilfetexte.
Wie Variablennamen sollte man auch keine Module abkürzen, bl für blacklist geht nicht e für excelproxy geht gar nicht und l für tabualarlogger geht gleich dreimal nicht.
Die ganzen Importe werden auch nicht verwendet.
Alles was unter if __name__... steht sollte in eine Funktion wandern, die üblicherweise main genannt wird.
Variablennamen schreibt man komplett klein, Konstanten GROSS. Die erste Zuweisung an datenpoolP3ExcelExport hat zu viele klammern, und wenn das ein Dateiname sein soll, dann ist der Wert auch falsch. Im Programm steht das ja als Defaultwert, es wird aber trotzdem erwartet, dass man einen anderen Wert per Commandozeile angibt, also ist der Defaultwert quatsch und kann weg.
sys.argv[1] ist bereits ein String, den nochmal mit str umzuwandlen ist Unsinn.
Re: Excel Datenabgleic
Verfasst: Dienstag 14. November 2023, 18:27
von FloRasp
Danke für die Antwortt

:
Loading "DATENPOOL.xlsx" ...
Traceback (most recent call last):
File "C:\Users\flori\Desktop\P3-DATENPOOL-Validation\main.py", line 35, in <module>
if (DATENPOOLTable := e.loadDATENPOOLExport(datenpoolP3ExcelExport)) is not None:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\flori\Desktop\P3-DATENPOOL-Validation\excelproxy.py", line 22, in loadDATENPOOLExport
if not validateColumnTitles(sheet[1]):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\flori\Desktop\P3-DATENPOOL-Validation\excelproxy.py", line 45, in validateColumnTitles
l.logError("Column " + str(index) + ": Title is \"" + str(cell.value) + "\" but should be \"" + td.attributes[index] + "\"")
TypeError: logError() missing 2 required positional arguments: 'line' and 'signalName'
Er sollte die Excel nach definierten Regeln abgleichen und das Ergebnis dann in das .txt-sheet schreiben. Das hat auch schon funktioniert aber nur bei mir nicht.
Re: Excel Datenabgleic
Verfasst: Dienstag 14. November 2023, 18:30
von Sirius3
Der Fehler deutet darauf hin, dass das ganze Programm ziemlich kaputt ist.
Auch wie hier Stringszusammengestückelt werden und dass := benutzt wird, deutet nicht gerade darauf hin, dass das Programm von akzeptabler Qualität wäre.
Re: Excel Datenabgleic
Verfasst: Dienstag 14. November 2023, 18:35
von __deets__
Irgendwer hat dir das doch vermacht. Den solltest du um Hilfe bitten, das ist ja ein Problem dieses Projektes.
Re: Excel Datenabgleic
Verfasst: Dienstag 14. November 2023, 18:38
von __blackjack__
Das scheint nicht von einem Python-Programmierer zu sein wenn da dauernd \" innerhalb von Zeichenketten verwendet werden, wo man einfach ' zum einschliessen der Gesamtzeichenkette hätte nehmen können.
Beim ersten Schnipsel wo die ganzen Modulnamen mit einem Buchstaben abgekürzt werden, kann man eigentlich schon sagen das ist für die Tonne. Oder ``str(sys.argv[1])`` — yeah, wir wandeln eine Zeichenkette in eine Zeichenkette um, damit sie noch zeichenkettiger ist.
Re: Excel Datenabgleic
Verfasst: Dienstag 14. November 2023, 18:52
von FloRasp
Ich merke schon. Das Projekt muss komplett neu aufgerollt werden.
Re: Excel Datenabgleic
Verfasst: Dienstag 14. November 2023, 19:26
von __blackjack__
Es ist auch schwierig bei dem Fehler etwas zu sagen weil wir nicht wissen was `l` in `excelproxy` ist. Falls es da auch `tabularlogger` wie im Hauptmodul ist: Was ist `tabularlogger`? Im Package-Index findet man unter dem Namen nichts, und wenn es ein Modul ist was zu diesem Projekt gehört, dann kennen wir das ja nicht. Dann ist das wahrscheinlich ein Fehler der beim Testen bisher nicht aufgefallen ist.
Die Namensschreibweise entsprechen auch nicht den Python-Konventionen. Wie gesagt, das sieht aus als wenn das nicht von einem Python-Programmierer ist.