Seite 1 von 1

Wie .csv Datei als Instanz einer Klasse einlesen&bearbeiten?

Verfasst: Mittwoch 8. Februar 2012, 18:36
von pinoy
Hey,

ich muss für einen Kurs an der Uni ein kleines Warenwirtschaftsprogramm mit verschiedenen Funktionen schreiben. Ich habe schon eine Nutzeranmeldung mit Passwort und ein Menu mit verschiedenen Ausgaben geschrieben. Z.b. kommt im Menu wenn man 1 drückt:

Sie haben Option 1 gewählt: Lagerbestände eingelesen.

1;Teppich;17.89;400
2;Couch;500.0;29
3;Pflanze;4.5;100
4;Kreide;4.0;2
303;Tisch;20.45;400
408;Stuhl;10.99;1100
514;Hocker;3.99;1550
5; Heizungsventil; 19.99; 20
6; Teppich (blau); 18.99; 10

In meinem Code steht hierfür:
elif (c==1):
print("\nSie haben Option 1 gewählt: Lagerbestände eingelesen.\n")
myfile = open("C:\...\\bestaende.csv", "r")
for line in myfile:
print line.rstrip()
myfile.close()

Jetzt hänge ich an folgender Aufgabe fest:

Nun wollen Sie die eingelesenen Bestände nicht nur ausgeben, sondern auch „im Programm behalten“. .Hierzu können Sie z.B. eine eigene Klasse sowie eine dazu passende Datenstruktur verwenden. Jeder eingelesene Datensatz steht hierbei für eine Instanz dieser Klasse. Wenn Sie eine Klasse verwenden, benötigen sie für diese auch entsprechende Methoden. Abschließend bauen Sie Ihr Programm bitte so um, dass die Nutzerauswahl „1“ im Hauptmenü lediglich die Bestände aus der Datei einliest und die Nutzerauswahl „2“ dann die entsprechenden Bestände anzeigt.

und:


Nun soll bei Auswahl der Option „6“ die vorhandenen Bestände wieder in das File bestaende.csv geschrieben werden. Die bisherigen Bestände werden dadurch überschrieben. Achten Sie beim Schreiben in das File bitte auf korrekte Formatierungen und das passende Setzen von Semikolons zwischen den einzelnen Werte. Nachdem Sie alle Werte in die Datei geschrieben haben, schließen Sie die Datei.


Kann mir da bitte Jemand helfen???

Re: Wie .csv Datei als Instanz einer Klasse einlesen&bearbei

Verfasst: Mittwoch 8. Februar 2012, 18:45
von webspider
Lies dich doch mal über Klassen ein. Evtl. auch übers csv-Modul (wobei man das auch ohne lösen kann).

Und irgendwie kommt mir die Aufgabenstellung schon sehr bekannt vor. Sicher, dass das hier keine verpflichtende Hausaufgabe ist?

Re: Wie .csv Datei als Instanz einer Klasse einlesen&bearbei

Verfasst: Mittwoch 8. Februar 2012, 19:56
von Hyperion
Hallo,

ich würde auch jeden Fall dafür plädieren, das ``csv``-Modul zu nutzen. Schaut Euch doch mal an, was das für Datenstrukturen zurückliefert und ob Euch nicht damit ein Datentyp aus der StandardLib reicht (Listen, Dictionaries). Im Aufgabentext steht ja nichts verbindliches vom Anlegen einer eigenen Klasse.

Wenn Du hier Code postest, dann benutze bitte die Code-Tags (z.B. für das CSV-File) und für Python-Code die speziellen Python-Code-Tags. Damit bleiben u.a. die Einrückungen vorhanden, die ja für Python wichtig sind.

Dateien sollte man ürbigens so öffnen:

Code: Alles auswählen

with open(...) as handler:
    # handler ist hier Datei-Objekt
    # handler wird nach Verlassen dieses Blocks automatisch geschlossen
Wenn ich mir Euren Code so angucke, dann solltet Ihr dringend erst einmal besser strukturieren. Das riecht nach einem endlos langen Spaghettiprogramm a la:

Code: Alles auswählen

imports

while True:
    choice = ...
    if chocie == 1:
        # hier lauter Codezeilen der Funktionalität A
    elif choice == 2:
        # hier lauter Codezeilen der Funktionalität B
    ...
    elif ...
        # hier lauter Codezeilen der Funktionalität N
Das ist nicht gut! Schaut Euch doch mal andere Scipte an; grad aktuell hat ein Anfänger dieses gepostet. Da ist nicht alles perfekt, aber das Erstellen des Menüs und die Separierung in Funktionen an sich ist gut gelungen. Es gibt hier auch noch zig andere Beispiele dafür hier im Forum.

Wenn Du noch konkrete Fragen hast, dann melde Dich einfach wieder hier :-)

Re: Wie .csv Datei als Instanz einer Klasse einlesen&bearbei

Verfasst: Mittwoch 8. Februar 2012, 22:32
von pinoy
ahhh vielen dank, das csv modul war genau was ich gesucht hab! :)

Re: Wie .csv Datei als Instanz einer Klasse einlesen&bearbei

Verfasst: Donnerstag 9. Februar 2012, 13:00
von Hyperion
pinoy hat geschrieben:ahhh vielen dank, das csv modul war genau was ich gesucht hab! :)
Mein weiterer Beitrag war imho fast schon gewichtiger ;-)