Python - AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

 
Vista:
Imágen de perfil de Emanuel
Val: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por Emanuel (11 intervenciones) el 08/09/2020 03:44:06
tengo el siguiente código que abre un archivo csv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def ingresando(codigo,ingresos):
    result=[]
    with open('inventario.csv')as File:
        reader=csv.DictReader(File)
        for row in reader:
            if row['codigo'] == codigo:
                row['ingresos']= ingresos
            result.append(row)
    with open('inventario.csv','w')as File:
        #reader=csv.DictReader(File)
        fieldnames=['codigo','restrictiva','ubicacion','descripcion','unidad','tipo','familia','stock_minimo','inicial','ingresos','egresos','perdidas','total','observaciones','observaciones_perdida']
        writer=csv.DictWriter(File,fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(result)

Este código me escribe en la columna que coincida con el código del producto en el espacio (ingresos) un valor, tengo el problema que al hacer esto python me borra el contenido anterior, lo cual es un problema ya que necesito que estos valores sean acumulativos, es para un inventario que está en un csv. Por ejemplo:

tengo en el csv un valor de 100 en ingresos, si ingresan 100 mas en ese espacio deben sumarse los 100 que ya tenía y los 100 que ingresaron. Alguien podria sugerirme algún modo de hacerlo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de aberon10
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por aberon10 (109 intervenciones) el 08/09/2020 21:54:13
Hola prueba abriendo el archivo en modo append en lugar de solo escritura.
1
open('inventario.csv','a') as File
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Emanuel
Val: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por Emanuel (11 intervenciones) el 09/09/2020 02:28:17
comprendo, el append me agregaria columnas? pero como se aplicaria para el caso de ir acumulando cantidades en un espacio específico del csv?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de aberon10
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por aberon10 (109 intervenciones) el 09/09/2020 18:43:48
No me queda claro lo que quieres realizar, puedes comentarnos un poco más?
Con el modo de apertura "a" agrega contenido, a diferencia de "w" write que sobreescribe el contenido anterior. En este caso agrega una nueva fila al archivo csv.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Emanuel
Val: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por Emanuel (11 intervenciones) el 09/09/2020 18:56:01
El append si me agrega filas extras pero lo que quiero es que agregue en un mismo campo de una columna a modo que vaya sumando el contenido de esta, tengo en un csv una columna llamada ingresos, con w se sobreescribe los ingresos lo cual no quiero, ya que deberia ser acumulativo, con a lo intente pero me crea una fila por debajo del contenido del csv con datos duplicados. Lo que necesito es que python recupere lo que hay en ingresos y los sume con los nuevos.

Ingreso que ya esta en esta columna + nuevo ingreso (que aculumen las cantidades) soy nuevo en python. XD.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de aberon10
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por aberon10 (109 intervenciones) el 09/09/2020 19:05:19
Intenta hacer algo así:

1
2
3
4
5
6
7
8
9
10
11
12
def ingresando(codigo,ingresos):
    result=[]
    with open('inventario.csv')as File:
        reader=csv.DictReader(File)
        for row in reader:
            if row['codigo'] == codigo:
                row['ingresos'] = int(row['ingresos']) + int(ingresos)
            result.append(row)
    with open('inventario.csv','w')as File:
        fieldnames=['codigo','restrictiva','ubicacion','descripcion','unidad','tipo','familia','stock_minimo','inicial','ingresos','egresos','perdidas','total','observaciones','observaciones_perdida']
        writer=csv.DictWriter(File,fieldnames=fieldnames)
        writer.writerows(result)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Emanuel
Val: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por Emanuel (11 intervenciones) el 09/09/2020 21:10:13
ahora me da este error:
1
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

Comprendo que no hay similitud de tipos de datos, los cambie a string pero me concatena los valores, :(....
1
row['ingresos']= int(row['ingresos'])+int(ingresos)
en este codigo me da el error

cuando cambio a:
1
row['ingresos']= str(row['ingresos'])+str(ingresos)
, me concatena.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de aberon10
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por aberon10 (109 intervenciones) el 09/09/2020 21:19:13
Ese error se da porque la variable ingresos tiene un valor None o el valor de row['ingresos'] es None, por lo que deberias hacer la siguiente comprobación
1
row['ingresos'] = int(row['ingresos']) + int(ingresos) if row['ingresos'] not is None else int(ingresos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Emanuel
Val: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por Emanuel (11 intervenciones) el 09/09/2020 21:39:16
La sintaxis es tal cual:?
1
row['ingresos'] = int(row['ingresos']) + int(ingresos) if row['ingresos'] not is None else int(ingresos)
python me toma como error de sintaxis.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de aberon10
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por aberon10 (109 intervenciones) el 09/09/2020 21:43:14
1
2
3
4
if row['ingresos'] is None:
    row['ingresos'] = ingresos
else:
    row['ingresos'] = int(row['ingresos']) + int(ingresos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Emanuel
Val: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por Emanuel (11 intervenciones) el 09/09/2020 21:50:46
muchas gracias... solucionado...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Emanuel
Val: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

AYUDA COMO INGRESAR DATOS QUE VAYAN ACUMULANDOSE EN UN CSV

Publicado por Emanuel (11 intervenciones) el 09/09/2020 21:42:24
1
2
3
row['ingresos']= int(row['ingresos'])+int(ingresos)if row['ingresos'] not is None else int(ingresos)
                                                                              ^
SyntaxError: invalid syntax
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar