Tengo un directorio de archivos zip (aproximadamente 10,000 archivos pequeños), dentro de cada uno de ellos se encuentra un archivo CSV que estoy tratando de leer y dividir en varios archivos CSV diferentes.Leer archivos CSV desde el archivo Zip
Me las arreglé para escribir el código para dividir los archivos CSV de un directorio de CSV, que se muestra a continuación, que lee el primer atttribute del CSV, y dependiendo de qué se lo escriba al CSV relevante.
import csv
import os
import sys
import re
import glob
reader = csv.reader(open("C:/Projects/test.csv", "rb"), delimiter=',', quotechar='"')
write10 = csv.writer(open('ouput10.csv', 'w'), delimiter=',', lineterminator='\n', quotechar='"', quoting=csv.QUOTE_NONNUMERIC)
write15 = csv.writer(open('ouput15.csv', 'w'), delimiter=',', lineterminator='\n', quotechar='"', quoting=csv.QUOTE_NONNUMERIC)
headings10=["RECORD_IDENTIFIER","CUSTODIAN_NAME","LOCAL_CUSTODIAN_NAME","PROCESS_DATE","VOLUME_NUMBER","ENTRY_DATE","TIME_STAMP","VERSION","FILE_TYPE"]
write10.writerow(headings10)
headings15=["RECORD_IDENTIFIER","CHANGE_TYPE","PRO_ORDER","USRN","STREET_DESCRIPTION","LOCALITY_NAME","TOWN_NAME","ADMINSTRATIVE_AREA","LANGUAGE"]
write15.writerow(headings15)
for row in reader:
type = row[0]
if "10" in type:
write10.writerow(row)
elif "15" in type:
write15.writerow(row)
Así que ahora estoy tratando de leer los archivos Zip en lugar de perder el tiempo extraerlos primero.
Esto es lo que tengo hasta ahora después de seguir la mayor cantidad de tutoriales que he encontrado
import glob
import os
import csv
import zipfile
import StringIO
for name in glob.glob('C:/Projects/abase/*.zip'):
base = os.path.basename(name)
filename = os.path.splitext(base)[0]
datadirectory = 'C:/Projects/abase/'
dataFile = filename
archive = '.'.join([dataFile, 'zip'])
fullpath = ''.join([datadirectory, archive])
csv = '.'.join([dataFile, 'csv'])
filehandle = open(fullpath, 'rb')
zfile = zipfile.ZipFile(filehandle)
data = StringIO.StringIO(zfile.read(csv))
reader = csv.reader(data)
for row in reader:
print row
Sin embargo y error se tira
AttributeError: objeto 'str' no tiene atributo 'lector'
Espero que alguien me puede mostrar cómo cambiar mi código de lectura CSV que funciona para leer el archivo Zip.
muy apreciada
Tim
Tal vez así es como pegó el código, pero casi no hay nada en su bucle for name. ¿A qué línea se refiere el error? –