.csv schreiben, Problem bei Übergabe/Aufruf

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
projektor
User
Beiträge: 5
Registriert: Mittwoch 25. November 2009, 13:50

Hi,

hab folgendes Problem:

.csv writer:

Code: Alles auswählen

import sys
import csv
import fwpf_studenten

#stud=fwpf_studenten.myclass()
#polist = []
#polist = stud.liste()

class myclass:
    def schreiben(self, polist):
        try:
            d = open("points.csv","w")
        except:
            print("Dateizugriff fehlgeschlagen")
            sys.exit(0)

        for element in polist:
            d.write( str (element[0]) + ";"
                    + element[1] + ";"
                    + element[2] + ";"
                    + element[3] + ";"
                    + str(element[4]) + ";"
                    + element[5] + ";"
                    + str(element[6]) + ";"
                    + str(element[7]) + ";"
                    + str(element[8]) + ";"
                    + element[9] + ";"
                    + element[10] + "\n")

        d.close()



#a = myclass()
#a.schreiben(polist)

Test-Aufrufer:

Code: Alles auswählen

import sys
import csv
import points_write
import fwpf_studenten

stud=fwpf_studenten.myclass()
polist = []
polist = stud.liste()
a=points_write.myclass()
a.schreiben(polist)

Folgendes sollte passieren: Also wenn ich im .csv-writer Modul die Kommentierungen löse, funktioniert es soweit. Das Problem ist, das ich das Modul gerne so hätte das ich es von einem anderen Modul aus aufrufen kann. Das bekomm ich jedoch irgendwie nicht ganz hin, weiß nicht wo mein Fehler liegt. Als Parameter sollte das writer Modul eine 2-dimensionale Liste nehmen, was wie gesagt von dem anderen Modul aus allerdings nicht funktioniert.

Fehlermeldung:

a=points_write.myclass()
AttributeError: 'module' object has no attribute 'myclass'
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Wie heißen denn deine Dateien? Das wäre mal ganz hilfreich zu wissen. Verwendest du IDLE? Dann könnte schließen helfen.

btw.: warum verwendest du überall diese überflüssigen Klassen?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Und warum nicht gleich das [mod]csv[/mod]-Modul?
Das Leben ist wie ein Tennisball.
projektor
User
Beiträge: 5
Registriert: Mittwoch 25. November 2009, 13:50

Die obere heisst points_write so wie es auch eingebunden ist.
Die untere heisst einfach nur test.

Ja ich verwende IDLE, funzt aber trotzdem nicht.

Bezüglich der Klassen: Wenn du mir zeigst wie es auch ohne Klassen in den einzelnen Modulen geht, kann ichs auch ohne machen :)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

projektor hat geschrieben:Ja ich verwende IDLE, funzt aber trotzdem nicht.
Was Darii ausdrücken wollte: Wenn du IDLE verwendest, ist IDLE mit hoher Wahrscheinlichkeit der Grund für den Fehler. Oder anders: du machst den Fehler, weil du dich nicht genau genug mit IDLE auskennst. Starte das Script besser mittels "python script_name.py" über die Konsole.
projektor hat geschrieben:Bezüglich der Klassen: Wenn du mir zeigst wie es auch ohne Klassen in den einzelnen Modulen geht, kann ichs auch ohne machen :)
Indem du das "class myclass:" weglässt und die Zeilen 11-31 nach links einrückst. Dann funktioniert "points_write.schreiben(...)". Code auf Modulebene ist übrigens keine gute Idee, damit wird es nahezu unbrauchbar (Code wird bereits beim Importieren ausgeführt, Code wird nur einmal ausgeführt, globale Variablen, unflexibel). Packe das besser in eine Funktion.
Das Leben ist wie ein Tennisball.
projektor
User
Beiträge: 5
Registriert: Mittwoch 25. November 2009, 13:50

Thx @ EyDu und Darii,

das Problem war tatsächlich IDLE, aber wo liegt da das Problem und gibt es dieses Problem auch mit PyScripter oder ähnlichen?

Das mit den Modulen ist mir schon bewusst, aber das ist schon absicht so :)


---> Hab da noch ein anderes Problem:
Kann mir mal jemand nen Code verraten, wie es möglich ist an eine 2-dimensionale Liste, in jeder Zeile hinten jeweils noch eine Spalte anzuhängen??? Denke das müsste mit append funktionieren, jedoch appendiert er bei mir stehts nur das eingegebene ganz am ende der Liste, und nicht jeweils in jede Zeile.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

projektor hat geschrieben:...
Das mit den Modulen ist mir schon bewusst, aber das ist schon absicht so :)
Bei der csv-Erstellung gibts aber einiges zu beachten, damit Deine Datei später noch richtig eingelesen werden kann, diese Arbeit kann Dir das Modul abnehmen. Aber naja..
projektor hat geschrieben: ---> Hab da noch ein anderes Problem:
Kann mir mal jemand nen Code verraten, wie es möglich ist an eine 2-dimensionale Liste, in jeder Zeile hinten jeweils noch eine Spalte anzuhängen??? Denke das müsste mit append funktionieren, jedoch appendiert er bei mir stehts nur das eingegebene ganz am ende der Liste, und nicht jeweils in jede Zeile.
Wenn Du Dir vergewärtigst, dass Du eine Liste von Listen vor Dir hast, fällt Dir bestimmt ein, worauf Du das append() anwenden mußt. ;)
projektor
User
Beiträge: 5
Registriert: Mittwoch 25. November 2009, 13:50

Vielen Dank Jerch bin drauf gekommen was du meinst und hat wunderbar geklappt :)
Antworten