ordenar operaciones leer lectura guardar exportar con como columna archivos archivo abrir python csv iterator next

operaciones - ¿Lectura de.csv en Python sin recorrer todo el archivo?



leer columna de un archivo en python (5)

La respuesta obvia parece ser simplemente almacenar la línea anterior en cada iteración.

>>> for x in csv.DictReader(stream): ... print prevLine ... print x ... prevLine = x ....

La única forma en que he visto usar el csv.reader de Python es en un bucle for, que recorre todo el archivo sin guardar los valores pasados ​​de las variables de lectura. Solo necesito trabajar con 2 líneas consecutivas del (enorme) archivo a la vez. Utilizando csv.reader for loop, solo tengo 1 línea a la vez.

¿Hay alguna manera de utilizar el módulo csv de Python para tomar solo una línea de un archivo csv sin tener que terminar de leer el archivo hasta el final?

Necesito establecer variables para los valores en la primera línea, establecer un segundo conjunto de variables para los valores de la siguiente línea, usar los dos conjuntos de variables simultáneamente para los cálculos, luego sobrescribir el primer conjunto de variables con el segundo conjunto, y lea una nueva línea para sobrescribir el segundo conjunto.


Lee CSV:

readCSV = csv.reader(csvFile, delimiter='','')

Lea la siguiente fila en Python 2.7:

row = readCSV.next()

Lea la siguiente fila en Python 3.4:

row = readCSV.__next__()


No hay nada que te obligue a utilizar el lector en un bucle. Solo lea la primera línea, luego lea la segunda línea.

import csv rdr = csv.reader(open("data.csv")) line1 = rdr.next() # in Python 2, or next(rdr) in Python 3 line2 = rdr.next()


Robo flagrante de TK ... ... principalmente la pregunta que queda es, ¿qué quiere hacer el OP con la primera y la última línea del archivo?

prevLine = None for x in csv.DictReader(stream): if prevLine is not None: DoWork(prevLine, x) else: Initialize(x) prevLine = x Finalize(prevLine)


Si siempre está mirando exactamente dos líneas consecutivas, me parece que podría beneficiarse de usar la recipe pares. Desde el módulo itertools :

from itertools import tee, izip def pairwise(iterable): "s -> (s0,s1), (s1,s2), (s2, s3), ..." a, b = tee(iterable) next(b, None) return izip(a, b)

Lo usarías así:

for first_dict, second_dict in pairwise(csv.DictReader(stream)): # do stuff with first_dict and second_dict