Seite 1 von 1

Anfänger: Problem mit Argumenten in Funktion

Verfasst: Montag 13. Dezember 2010, 10:06
von andi24
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

Re: Anfänger: Problem mit Argumenten in Funktion

Verfasst: Montag 13. Dezember 2010, 10:47
von BlackJack
@andi24: Überlegen und den Docstring in der Klasse lesen, dort wird doch gesagt was `f` ist.

Re: Anfänger: Problem mit Argumenten in Funktion

Verfasst: Montag 13. Dezember 2010, 11:40
von andi24
@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