Python - No me guarda la información en el archivo.json

 
Vista:

No me guarda la información en el archivo.json

Publicado por Alejandro (5 intervenciones) el 16/09/2022 17:39:54
import json

archivo = open("parqueadero.json","r") #se abre en modo lectura
contenido = archivo.read()#Leemos todo el contenido del archivo
archivo.close()
datos = json.loads(contenido) #Covierto el contenido a formato Json

class Parqueadero:
def __init__(self):
self.vehiculos = []
self.placa = ""
self.tipoVehiculo = ""

def Ingresar_Vehiculo(self):
self.placa = input("Ingrese la placa del vehiculo: ")
self.tipoVehiculo = input("Ingrese el tipo de vehiculo: ")
self.tipoVehiculo.append({"placa": str(self.placa), "tipo": str(self.tipoVehiculo)})
datos["vehiculos"].append({"placa":self.placa,"tipo":self.tipoVehiculo})
archivo = open("parqueadero.json","w")
contenido = json.dumps(datos)
archivo.write(contenido)
archivo.close()

# sale este error AttributeError: 'str' object has no attribute 'append'
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

No me guarda la información en el archivo.json

Publicado por antonio (65 intervenciones) el 17/09/2022 11:28:29
Hola buenas podrías mostrar el contenido del archivo parqueadero.json porque los estas intentando leer todo como string y a lo mejor hay algún tipo dato numérico como algún int o float:

si es string estara entre comillas: {"vehiculos": [{"placa":

"1234"

,
"tipoVehuculo": "a"}]}
si es int no llevara comillas {"vehiculos": [{"placa":

1234

, "tipoVehuculo": "a"}]}
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

No me guarda la información en el archivo.json

Publicado por Alejandro (5 intervenciones) el 18/09/2022 03:31:13
{"hora_moto": 1200, "hora_carro": 3000, "vehiculos": [{"placa": "NWZ60C", "tipo": "moto", "ingreso": "2022-09-25 15:02:30"}, {"placa": "KBF234", "tipo": "carro", "ingreso": "2022-09-25 08:02:30"}]}

# hola este es el contenido del archivo parqueadero.json
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

No me guarda la información en el archivo.json

Publicado por antonio (65 intervenciones) el 18/09/2022 14:04:48
Hola este seria la solución el problema es que utilizas un append en un str no lo vi de primeras pero tambien era para ver si lo escribe si errores:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import json
 
archivo = open("parqueadero.json","r") #se abre en modo lectura
contenido = archivo.read()#Leemos todo el contenido del archivo
archivo.close()
datos = json.loads(contenido) #Covierto el contenido a formato Json
 
class Parqueadero:
    def __init__(self):
        self.vehiculos = []
        self.placa = ""
        self.tipoVehiculo = ""
 
    def Ingresar_Vehiculo(self):
        self.placa = input("Ingrese la placa del vehiculo: ")
        self.tipoVehiculo = input("Ingrese el tipo de vehiculo: ")
 
 
        datos["vehiculos"].append({"placa":self.placa,"tipo":self.tipoVehiculo})
 
        archivo = open("parqueadero.json","w")
        contenido = json.dumps(datos)
        archivo.write(contenido)
        archivo.close()
 
p1 = Parqueadero()
p1.Ingresar_Vehiculo()
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

No se como buscar la placa en el archivo json

Publicado por Alejandro (5 intervenciones) el 18/09/2022 21:26:56
import json
from datetime import datetime

archivo = open("parqueadero.json","r") #se abre en modo lectura
contenido = archivo.read()#Leemos todo el contenido del archivo
archivo.close()
datos = json.loads(contenido) #Covierto el contenido a formato Json

while True:
seleccion = input("1 Ingresar Vehiculo: \n2 Retirar vehiculo: \n")
if seleccion == "1":
placa = input("Ingrese la placa del vehiculo: ")
tipoVehiculo = input("Ingrese el tipo de vehiculo: ")
ingreso_texto = "2022-09-17 07:00:00"
ingreso = datetime.strptime(ingreso_texto, "%Y-%m-%d %H:%M:%S")
datos["vehiculos"].append({"Placa": placa, "Tipo ": tipoVehiculo,"Ingreso":ingreso_texto})
archivo = open("parqueadero.json", "w")
contenido = json.dumps(datos)
archivo.write(contenido)
archivo.close()
elif seleccion == "2":
eliminar_placa = input("Digite la placa del vehiculo: ")
ingreso_texto = "2022-09-18 07:00:00"
ingreso = datetime.strptime(ingreso_texto, "%Y-%m-%d %H:%M:%S")
retiro = datetime.now()
retiro_texto = retiro.strftime("%Y-%m-%d %H:%M:%S")
diferencia = retiro - ingreso
segundos = diferencia.total_seconds()
minutos = segundos // 60 #Pasamos los segundos a minutos
segundos_resto = segundos % 60 #Segundos que sobran
horas = minutos // 60 #Pasamos los minutos a horas
minutos_resto = minutos % 60 #Minutos que sobran
total_pagar = (segundos / 3600) * 1200
#del datos["vehiculos"][0] aca puse la posicion cero pero ahí debería ser la placa a borrar
archivo = open("parqueadero.json", "w")
contenido = json.dumps(datos)
archivo.write(contenido)
archivo.close()
print(f"Tiempo en el parqueadero {horas:.0f}Horas:{minutos_resto:.0f}Minutos:{segundos_resto:.0f}:Segundos ")
print(f"El total es de: {total_pagar:.0f} pesos\n")


#Amigo mira es que no se como hacer para hacer la segunda opción que es retirar el vehículo ingresando la placa
como busco la placa dentro del json compruebo que si este para borrarla
le agradecería infinitamente si me colabora con eso le he intentado y no hallo una forma
una opción que pensé es mostrar todas las placas mirar el índice con un contador y borrarla pero no me dejan asi
debe ser ingresando la placa
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

No se como buscar la placa en el archivo json

Publicado por Alejandro (5 intervenciones) el 18/09/2022 21:33:17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import json
from datetime import datetime
 
archivo = open("parqueadero.json","r") #se abre en modo lectura
contenido = archivo.read()#Leemos todo el contenido del archivo
archivo.close()
datos = json.loads(contenido) #Covierto el contenido a formato Json
 
while True:
    seleccion = input("1 Ingresar Vehiculo: \n2 Retirar vehiculo: \n")
    if seleccion == "1":
        placa = input("Ingrese la placa del vehiculo: ")
        tipoVehiculo = input("Ingrese el tipo de vehiculo: ")
        ingreso_texto = "2022-09-17 07:00:00"
        ingreso = datetime.strptime(ingreso_texto, "%Y-%m-%d %H:%M:%S")
        datos["vehiculos"].append({"Placa": placa, "Tipo ": tipoVehiculo,"Ingreso":ingreso_texto})
        archivo = open("parqueadero.json", "w")
        contenido = json.dumps(datos)
        archivo.write(contenido)
        archivo.close()
    elif seleccion == "2":
        eliminar_placa = input("Digite la placa del vehiculo: ")
        ingreso_texto = "2022-09-18 07:00:00"
        ingreso = datetime.strptime(ingreso_texto, "%Y-%m-%d %H:%M:%S")
        retiro = datetime.now()
        retiro_texto = retiro.strftime("%Y-%m-%d %H:%M:%S")
        diferencia = retiro - ingreso
        segundos = diferencia.total_seconds()
        minutos = segundos // 60 #Pasamos los segundos a minutos
        segundos_resto = segundos % 60 #Segundos que sobran
        horas = minutos // 60 #Pasamos los minutos a horas
        minutos_resto = minutos % 60 #Minutos que sobran
        total_pagar = (segundos / 3600) * 1200
        #del datos["vehiculos"][0]
        archivo = open("parqueadero.json", "w")
        contenido = json.dumps(datos)
        archivo.write(contenido)
        archivo.close()
        print(f"Tiempo en el parqueadero {horas:.0f}Horas:{minutos_resto:.0f}Minutos:{segundos_resto:.0f}:Segundos ")
        print(f"El total es de: {total_pagar:.0f} pesos\n")
 
       #Amigo mira es que no se como hacer para hacer la segunda opción que es retirar el vehículo ingresando la placa
       #como busco la placa dentro del json compruebo que si este para borrarla
       #le agradecería infinitamente si me colabora con eso le he intentado y no hallo una forma
       #una opción que pensé es mostrar todas las placas mirar el índice con un contador y borrarla pero no me dejan asi
       #debe ser ingresando la placa
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