iter
integrierte Funktion erwartet eine Auflistung als Argument, also Attribute in einer Listenform übergeben. Dann benutze den @ Shankar Vorschlag.
class Cdr():
def __iter__(self):
return iter([self.name, self.my_value, self.my_datetime])
#from another class
with open(self.file_name, 'wb') as csv_file:
wr = csv.writer(csv_file, delimiter=',')
for cdr in cdr_list:
wr.writerow(list(cdr)) # @Shankar suggestion
aus Python Hilfe docs:
iter (...)
iter (Sammlung) -> Iterator
iter (aufrufbar, Sentinel) -> Iterator
Holen Sie sich einen Iterator aus ein Objekt. In der ersten Form muss das Argument seinen eigenen Iterator liefern oder eine Sequenz sein.
In der zweiten Form wird die Callable aufgerufen, bis sie das Sentinel zurückgibt.
https://docs.python.org/3/library/pickle.html ist der Weg zu gehen oder Sie müssen durchlaufen die Attribute und dann in CSV schreiben. –
Haben Sie versucht einfache einfache Liste anstelle von Cdr-Klasse zuerst? Die __iter__ Funktion ist hier falsch (missbrauche iter()), wenn sie tatsächlich ausgeführt wird, solltest du eine Ausnahme haben, anstelle von stummem Leerzeichen – tdihp
'iter()' Funktion gibt ein iterierbares Objekt zurück. Sie müssen '.next()' verwenden, um darüber zu iterieren oder verwenden Sie eine 'list()' -Funktion, um es in eine Liste zu konvertieren ... wie 'wr.writerow (list (cdr))' –