Anfänger: Problem mit Argumenten in Funktion

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
andi24
User
Beiträge: 56
Registriert: Freitag 5. März 2010, 11:42

Hallo zusammen,

ich bin noch Anfänger in Python und kämpfe gerade mit etwas sehr grundlegendem: Ich wollte die csv-Klasse aus http://docs.python.org/library/csv.html testen und habe gerade Probleme mit dem Anlegen einer Instanz der Klasse:

Die Klasse sieht so aus:

Code: Alles auswählen

class UnicodeWriter:
#    """
#    A CSV writer which will write rows to CSV file "f",
#    which is encoded in the given encoding.
#    """
#
	def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds):	
	# Redirect output to a queue
		self.queue = cStringIO.StringIO()
		self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
		self.stream = f
		self.encoder = codecs.getincrementalencoder(encoding)()

	def writerow(self, row):
		self.writer.writerow([s.encode("utf-8") for s in row])
		# Fetch UTF-8 output from the queue ...
		data = self.queue.getvalue()
		data = data.decode("utf-8")
		# ... and reencode it into the target encoding
		data = self.encoder.encode(data)
		# write to the target stream
		self.stream.write(data)
		# empty queue
		self.queue.truncate(0)

	def writerows(self, rows):
		for row in rows:
			self.writerow(row)
..und ich möchte eine Instanz anlegen:

Code: Alles auswählen

myCSVwriter = UnicodeWriter();
So bekomme ich aber logischerweise die Meldung "TypeError: __init__() takes at least 2 arguments (1 given)". Aber was muss ich für f und für **kwds übergeben? Kann mir da jemand weiterhelfen?

Vielen Dank,

Andi
BlackJack

@andi24: Überlegen und den Docstring in der Klasse lesen, dort wird doch gesagt was `f` ist.
andi24
User
Beiträge: 56
Registriert: Freitag 5. März 2010, 11:42

@BlackJack:

Au, das ist ja peinlich - hast natürlich recht mit dem "f". Steht ja sogar noch in dem Teil, den ich gepostet hab ... :oops:

So klappts dann:

Code: Alles auswählen

f=open("meinedatei.csv") 
mycsv = UnicodeWriter(f)
Vielen Dank
Antworten