El archivo de E / S no se abre
Tengo este archivo csv dl.dropboxusercontent.com/s/tb4yc3lm3gg3j22/out.csv y estoy tratando de reemplazar la última columna con el método de lectura a continuación. En mi input.csv tengo que reemplazar el último archivado con algún cálculo. Lo intento como a continuación, pero de alguna manera obtengo ValueError: operación de E / S en un archivo cerrado. ¿Me pueden ayudar a señalar el error? Como estoy tratando de abrir el archivo de entrada y escribir todo, incluido el nuevo valor en el archivo out.csv que no existe inicialmente pero que debe construirse sobre la marcha.
def read():
for file in os.listdir("./"):
if file.endswith('.csv'):
fNameFull = os.path.basename(file)
inputFileName = os.path.splitext(file)[0]
with open(fNameFull, "rb") as infile, open('out.csv', "wb") as outfile:
r = csv.DictReader(infile)
w = csv.DictWriter(outfile, r.fieldnames)
w.writeheader()
for row in r:
if not row["col_last"].strip():
row["col_last"] = "calc_value"
w.writerow(row)
if __name__ == '__main__':
main()
read()
Error:
Traceback (most recent call last):
File "C:\Users\hp\Desktop\final\text\finalmod.py", line 50, in <module>
read()
File "C:\Users\hp\Desktop\final\text\finalmod.py", line 39, in read
w.writeheader()
File "C:\Python27\lib\csv.py", line 137, in writeheader
self.writerow(header)
File "C:\Python27\lib\csv.py", line 148, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
ValueError: I/O operation on closed file