Sto cercando di recuperare un intero file in memoria (fatto - usando StringIO) - ma questi oggetti non si comportano esattamente esattamente come i "veri" file per quanto posso vedere - ottengo l'intero contenuto, o posso leggere una riga alla volta, ma non riesco a capire come applicare questo schema:Come ottenere un lettore CSV per leggere un file di memoria?
import csv
with open(#MYMEMORYFILE_HERE#, 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
c'è un modo di trattare un memoryfile proprio come un file su disco, in modo da poter utilizzare gli idiomi più bello sopra ?
Python 2.7.4 (default, Apr 19 2013, 18:28:01)
EDIT: Grazie per le risposte su questo - penso di avere ristretto ciò che mi era confusa ... ma ho ancora un problema qui, il seguente non visualizzerà nulla? Sospetto che il rossore?
from csv import reader, writer
import StringIO
memfile=StringIO.StringIO()
spamwriter = writer(memfile)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
spamreader=reader(memfile)
for row in spamreader:
print ', '.join(row)
memfile.close()
EDIT # 2: Ma sto abbaiare contro l'albero sbagliato penso: non ho potuto ottenere la versione su disco di questo lavoro sia ('IOError: File non aprire per la lettura' - quando Io chiamo la lettura sul file già aperto ...) EDIT # 3: abbandonato il StringIO (non ce n'è davvero bisogno) - usate le linee di divisione come da risposta.
Lascerò il codice e i commenti qui - nel caso sia utile. (anche se è un vicolo cieco).
Anni dopo, vedo che hai aggiornato la tua domanda; il tuo aggiornamento fallisce perché ti sei dimenticato di * cercare di tornare a 0 *. –