Schreiben in io.BytesIO in csv schlägt in python3 fehl

9

Ich versuche, Python 2/3 kompatiblen Code zu schreiben, um Strings in das CSV-Dateiobjekt zu schreiben. Dieser Code:

%Vor%

Gibt diesen Fehler bei Python3:

%Vor%

Aber assert hat kein Problem mit dem Typ, also warum erzeugt csv einen Fehler?

Kann ich BytesIO nicht nur für Python 2 und 3 verwenden? Wo ist das Problem hier?

    
goelakash 22.06.2016, 16:57
quelle

1 Antwort

10

In Python3 erwartet csv.writer ein dateiähnliches Objekt, das im Textmodus geöffnet ist. In Python2 erwartet csv.writer ein dateiähnliches Objekt, das im Binärmodus geöffnet ist.

Verwenden Sie daher in Python3 io.StringIO , während Sie in Python2 io.BytesIO verwenden:

%Vor%

In Python3 gibt der obige Code

aus %Vor%

In Python2 gibt der obige Code

aus %Vor%     
unutbu 22.06.2016, 17:34
quelle