2017-12-17 2 views
0

ich eine Daten haben, sagen wir mal,Daten senden als CSV-E-Mail attachmet Python

data = [ 
    ['header_1', 'header_2'], 
    ['row_1_!', 'row_1_2'], 
    ['row_2_1', 'row_2_2'], 
] 

Ich brauche diese Daten als CSV-Datei-Anhang senden Nachricht an eine E-Mail. Ich kann es nicht speichern als .csv und dann anhängen vorhandenen CSV - Anwendung arbeitet in Googpe App Engine Sandbox-Umgebung. So können keine Dateien gespeichert werden.

Wie ich verstehe, besteht E-Mail-Anhang aus Dateiname und Datei codiert als base64.

Ich versuchte Befestigungskörper in der folgenden Art und Weise zu machen:

import csv 
if sys.version_info >= (3, 0): 
    from io import StringIO 
else: 
    from StringIO import StringIO 
in_memory_data = StringIO() 
csv.writer(inmemory_data).writerows(data) 
encoded = base64.b64encode(inmemory_data.getvalue()) 

Aber in Folge hat ich erhalten per E-Mail nicht gültige Datei 2 Spalten und 3 Zeilen, aber nur eine Zeichenfolge in der Datei (siehe Bild) . csv_screen

Was mache ich falsch?

Antwort

0

Ich habe den Fehler gefunden. Ich soll es zu bytearray statt Codierung base64 konvertieren ist:

encoded = bytearray(inmemory_data.getvalue(), "utf-8") 

fein gearbeitet, die Art und Weise.

Verwandte Themen