Code zum speichern des Pythoncodes nach bearbeiten einer Liste

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
LiiNKSYS
User
Beiträge: 11
Registriert: Freitag 30. Dezember 2022, 17:38

Hallo,

Ich suche die ganze Zeit schon nach einer Möglichkeit in meinem Programmcode eine Art autosave zu hinterlegen. Mein Programm bearbeitet Listen und ersetzt Werte in diesen. Jedoch werden alle nach dem schließen und erneut öffnen der Datei(.py) auf den Ursprungswert zurückgesetzt. Aktuell führe ich die Datei über PyCharm CE aus!
Wäre super, wenn das Programm nach jedem Suchlauf der for-Schleife oder bearbeiten der Listen Automatisch speichert.
Hoffe, dass mir hier jemand helfen kann!

Mit freundlichen Grüßen
Marco
Benutzeravatar
__blackjack__
User
Beiträge: 13919
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@LiiNKSYS: Das wäre IMHO nicht so toll. Wenn Du Werte speichern willst, dann speichere Werte. Nicht im Programm sondern als externe Datei(en). Je nach dem was die Liste(n) enthalten könnte das `json`-Modul hier sinnvoll sein.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
LiiNKSYS
User
Beiträge: 11
Registriert: Freitag 30. Dezember 2022, 17:38

Ich zeige mal die Listen aus dem Code. Sind aktuell nur zum Testen und wenn alles läuft, kommen die Richtigen Werte rein.
Teilenummer = ["000000000", "000000001", "000000002", "000000003", "000000004", "000000005"]
Lagerort = ["M000", "M001", "M002", "M003", "M004", "M005",]
Beschreibung = ["Blindniet", "Schraube M8", "Zange", "Schraubendreher", "Hammer", "Ball"]
Bestand = [1, 2, 3, 4, 5, 6]

Wie könnte ich es am besten umsetzen diese Listen zu speichern und auch Änderungen direkt in den Listen zu übernehmen.
Ich bin leider noch nicht so fit was die Umsetzung mit externen Daten im Code betrifft.
Benutzeravatar
snafu
User
Beiträge: 6830
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

LiiNKSYS hat geschrieben: Freitag 30. Dezember 2022, 18:30 Teilenummer = ["000000000", "000000001", "000000002", "000000003", "000000004", "000000005"]
Lagerort = ["M000", "M001", "M002", "M003", "M004", "M005",]
Beschreibung = ["Blindniet", "Schraube M8", "Zange", "Schraubendreher", "Hammer", "Ball"]
Bestand = [1, 2, 3, 4, 5, 6]
Das ist ein klassischer Anwendungsfall für Wörterbücher und somit auch für das JSON-Format. Deine Variablennamen sind dabei halt die Schlüssel. Bist du schon soweit, dass du mit Wörterbüchern (dict) umgehen kannst?

Du hättest dann keine einzelnen Listen mehr, sondern ein Gesamtliste, wo der Inhalt des Lagers mit Wörterbüchern definiert wird:

Code: Alles auswählen

[{"Nr": "00007", "Platz": "M004", "Name": "Schraube M8", "Bestand": 42}, ...]
Zuletzt geändert von snafu am Freitag 30. Dezember 2022, 18:42, insgesamt 1-mal geändert.
LiiNKSYS
User
Beiträge: 11
Registriert: Freitag 30. Dezember 2022, 17:38

Ich müsste es mir nochmal anschauen, aber an sich sollte das kein Problem sein.
Dann funktioniert die Index-Methode doch nicht mehr in den Listen oder?
Ich rufe über den Index der Teilenummer in den Listen am gleich Index dann die dazugehörigen Daten in Lagerort. Bestand usw.
Benutzeravatar
snafu
User
Beiträge: 6830
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Den Index brauchst du dann nur einmalig, weil er das jeweilige Wörterbuch aus der Gesamtliste holt. Willst du dann eine bestimmte Kategorie abfragen, dann etwa so für den Bestand des fünften Element deines Inventars: ``print(inventar[4]["Bestand"])``.

In Python fragt man aber bevorzugt die Elemente direkt ab, ohne Index:

Code: Alles auswählen

for element in inventar:
    print(element["Name"], element["Bestand"], sep="\t\t")
LiiNKSYS
User
Beiträge: 11
Registriert: Freitag 30. Dezember 2022, 17:38

Alles klar,
ich danke dir vielmals und werde mir das bei Zeit anschauen und denn Code umschreiben!
Antworten