ValueError: operación de E / S en un archivo cerrado

import csv with open('v.csv', 'w') as csvfile: cwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL) for w, c in p.iteritems(): cwriter.writerow(w + c) 

Aquí, p es un diccionario, w y c son cadenas.

Cuando bash escribir en el archivo se reporta un error:

 ValueError : I/O operation on closed file. 

Ayúdame, soy realmente nuevo en Python. Estoy trabajando con Python 2.7.3 Gracias de antemano.

Sangrar correctamente; for statement debe estar dentro with bloque:

 import csv with open('v.csv', 'w') as csvfile: cwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL) for w, c in p.iteritems(): cwriter.writerow(w + c) 

Fuera del bloque with , el archivo está cerrado.

 >>> with open('/tmp/1', 'w') as f: ... print f.closed ... False >>> print f.closed True 

El mismo error puede boost mezclando : tabs + espacios.

 with open('/foo', 'w') as f: (spaces OR tab) print f <-- success (spaces AND tab) print f <-- fail