__blackjack__ hat geschrieben: ↑Dienstag 10. August 2021, 11:12
@Kalysto: Also ich habe mir noch mal die Ausgangsfrage angeschaut und finde das reicht nicht um wirklich zu verstehen was gefordert ist. Natürlich sehe ich was da nach welchem Muster gemacht wurde, und man könnte jetzt auch Code schreiben der das macht, aber da weiss man immer noch nicht ob und was von diesem Einzelbeispiel auf die tatsächliche Anforderung übertragbar ist und was nicht. Ist die Tiefe der Struktur fix und darum gibt es auch ”Pfade” als Schlüssel? Ist dann immer der erste Teil des Pfads der geändert wird, oder kann das auch mal ein Teilpfad mitten drin sein? Warum sind die Daten eigentlich redundant in der Form, dass der Schlüssel auch immer Präfix bei den Werten ist? Oder ist das gar nicht immer der Fall sondern nur in diesem Beispiel? Ist "Kunden Übersicht" ein besonderer Schlüssel? Warum sind die Werte dahinter redundant zu den anderen Schlüsseln? Und was macht man wenn man mal ein Verzeichnis "Kunden Übersicht" haben will? Dann kollidieren die Schlüssel und das geht nicht? Berücksichtigt der Code den Fall und meldet so einen Fehler explizit?
Fragen über Fragen. Ich würde ja als erstes mal nur die Daten modellieren. Ohne Redundanzen. Wenn man sich auf Grunddatentypen beschränkt, sähe das wohl so aus:
Code: Alles auswählen
customer_folder = [
(
"01_Beschreibung",
[
"Beschriftung Verteilungen.smg",
"Beschriftung Verteilungen.xlsx",
],
),
(
"02_Materiallisten",
[
(
"Projekt-name",
["Eintragungen", "Geschlossen", "Zwischenrechnung"],
)
],
),
("03_Prüfungen", []),
("04_KNX", []),
("05_Bilder", []),
("06_Notizen", []),
("07_Datenbank", []),
]
Verzeichnisse/Innere Knoten werden als Tupel repräsentiert, Dateien/Blätter als Zeichenkette. Wobei ich mir bei "Eintragungen", "Geschlossen", und "Zwischenrechnung" nicht sicher bin ob das innere Knoten oder Blätter sein sollen. Das ist wieder so ein Punkt an dem Dein Beispiel ohne weitere Erklärung was das alles bedeuten soll, nicht ausreicht.
Grunddatentypen sind hier zwar ausreichend um die Struktur zu zeigen/definieren, aber wenn man damit nun arbeiten möchte, müsste man anfangen mit `isinstance()` (oder besser `functools.singledispatch()`) zwischen inneren Knoten und Blättern zu unterscheiden. In einer objektorientierten Programmiersprache ist da aber auch der Punkt wo man sich überlegen kann/sollte dafür eigene Datentypen zu definieren.
Also, danke erst einmal für deine Antwort
1. Kunden Übersicht ist eine Datenstruktur die JEDER Kunde als Standard erhalten sollte Kunden Übersicht könnte also auch als bsp. in Mustermann, Max -- Heidelberg "angepasst" werden
2. Kunden Übersicht Wird nie als Ordner existieren da diese alle in der Form Nachname, Vorname -- Wohnort erstellt werden.
3. Kunden Übersicht wird nur dann in Nachname, Vorname -- Wohnort geändert wenn der Kunde einen speziellen order erhalten sollte
4. Das Komplette Skript Programm wie auch immer hat um die 20.000 Zeilen welche natürlich nicht tip top sind da ich schlicht kein Profi bin... aber es "macht was es soll"
- Das ganze läuft mit der IOS App Pythonista
- Welches bedeute ich kann bei allem was ich mache und "Programmiere" nur reines Python verwenden kein C/C+ etc...
- Ich verwalte mit dieser App meine Material ein und Ausgänge (3 Mann Betrieb)
- desweiteren kann ich Bilder auf mein NAS Laden etc..
- Jeder Kunde welcher erstellt wird nach dem Oben genannten Format enthält immer Standard Ordner welche ich im Moment in einer config.ini gesichert und abrufe:
- config.ini Ausschnitt:
Code: Alles auswählen
maindircustomer = 01_Kunde
maindircustomer_datenbank = 2021_03_14 -- Datenbank
maindircustomer_vorlagen = 2021_03_05 -- Vorlagen
maindircustomer_vorlagen__excel_beschriftung = Beschriftung Verteilungen.xlsx
maindircustomer_vorlagen__semilog_beschriftung = Beschriftung Verteilungen.smg
maindircustomer_vorlagen__excel_dguvv3 = Prüfvorlage DGUV V3.xlsx
subdircustomer_beschriftung = 01_Beschriftungen
subdircustomer_materiallisten = 02_Materiallisten
subdircustomer_prüfungen = 03_Prüfungen
subdircustomer_e_check = 01_E-Check
subdircustomer_dguvv3 = 02_DGUV V3
subdircustomer_wallbox = 03_Wallbox
subdircustomer_netzwerk = 04_Netzwerk
subdircustomer_knx = 04_KNX
subdircustomer_knx_projekte = 01_KNX Projekte
subdircustomer_domovea = 02_Domovea
subdircustomer_server = 03_Server
subdircustomer_opc = 04_OPC
subdircustomer_x1 = 05_X1
subdircustomer_eintragungen = Eintragungen
subdircustomer_zwischenrechnung = Zwischenrechnung
subdircustomer_abgeschlossen = Abgeschlossen
subdircustomer_bilder = 05_Bilder
subdircustomer_notizen = 06_Notizen
subdircustomer_datenbank = 07_Datenbank
subdircustomer_kunde = 01_Kunde
subdircustomer_projekte = 02_Projekte
- Das blöde an dieser Sache ist wenn ein Ordner neu hinzukommt oder etwas geändert wird muss ich immer die jeweiligen Dateien auf allen 3 iPhones austauschen und muss den Code manuell anpassen da der Ordner ja sonst nicht abgefragt werden würde..
Somit ist meine Idee dahinter ein Wörterbuch (oder was auch immer) zu erstellen diese auf meinem Server zu speichern und bei bedarf eben immer Herunter lade um so immer aktuelle Daten zu verwenden...
D.h. wie in der config.ini Datei zu sehen gibt es nur 3 Dateien zur Zeit: Prüfvorlage DGUV V3.xlsx, Beschriftung Verteilungen.smg, Beschriftung Verteilungen.xlsx der Rest sind alle Ordner.
Ich habe mit einem Wörterbuch begonnen weil ich ja irgendwo und irgend wie einmal starten musste und ich musste mir ja eine UI in Pythonista generieren welche mir nun meine Ordner und Dateien darstellen würde.
bis ich eben zu dem Problem kam das ich es nicht hinbekam Keys zu ändern und wenn ich sie änderte (z.b. mit .pop) wurden sie an das ende gestellt und somit stimmte meine Darstellung nicht mehr....
Zusammengefasst:
- Es gibt zur Zeit nur 3 Dateien jeweils mit .xxx zu erkennen
- ich bräuchte eine Struktur welche sozusagen flexibel in "allen" Richtungen wäre, da sich alle Ordner und Dateien veränderbar/umbenannt werden könnten
- spiele auch gerade mit dem Gedanken auf mysql zurückzugreifen und dies in eine Tabelle zu schreiben...
- Der file-picker welcher unter IOS läuft braucht auch eine bestimmt Struktur damit er die Daten abfragen kann wie ich es in meinem ersten Post dargestellt hatte.
- Das Wiederrum heißt ich muss das ganze auch "umwandeln" können damit ich das ganze auswerten kann sowie Visuell darstellen kann
Ich dachte zuerst das es hier mit dem Wörterbuch einen Trick geben würde das das nun nicht so geht wie ich wollte ahnte ich ja nicht.... denn dann ist das ganze eine Weit aus größere Angelegenheit als ich dachte....
Ich hoffe das das erst einmal als Info reicht und mir evtl. wer einen Tipp/Hilfestellung geben kann wie ich das ganze angehen könnte.
Mit freundlichen Grüßen
Kalysto
p.s. sry. für die Anfangs mauen Informationen.