首页 > 解决方案 > python和Json - 编辑文件

问题描述

所以,我想从 python 更改我在 json 文件中的信息,但是我遇到了麻烦。我的 json 文件只是我想稍后编辑的信息:

[
  {
    "codigo": 10,
    "Nom_articulo": "jabon",
    "valor": 2500,
    "cantidad": 6,
    "subtotal": 0,
    "descuento": 0
  },
  {
    "codigo": 20,
    "Nom_articulo": "Crema",
    "valor": 9800,
    "cantidad": 4,
    "subtotal": 0,
    "descuento": 0
  },
  {
    "codigo": 30,
    "Nom_articulo": "Cepillo",
    "valor": 6000,
    "cantidad": 7,
    "subtotal": 0,
    "descuento": 0
  },
  {
    "codigo": 40,
    "Nom_articulo": "Servilletas",
    "valor": 3000,
    "cantidad": 2,
    "subtotal": 0,
    "descuento": 0
  },
  {
    "codigo": 50,
    "Nom_articulo": "Desodorante",
    "valor": 5000,
    "cantidad": 6,
    "subtotal": 0,
    "descuento": 0
  }
]

我想更改我所有字典中“小计”的值。

所以基本上我所做的是:

for i in range(len(archivo_r)):
                precio= archivo_r[i]["valor"]
                cantidad=archivo_r[i]["cantidad"]
                subtotal=precio*cantidad
                print(archivo_r[i]["codigo"], " - " ,archivo_r[i]["Nom_articulo"], " = ", str(subtotal))
                #almacenar mis subtotales en el archivo json
                print("sbtotal" ,archivo_r[i]["subtotal"])
                archivo_r[i]["subtotal"]=subtotal
                #archivo_r[i]["subtotal"].append(subtotal)
                #print(archivo_r)
            write_json(**XXXXX**)

这部分代码: archivo_r[i]["subtotal"]=subtotal完全符合我的需要,但是(这可能很愚蠢,但我在这里有点迷茫)我不知道如何使用它来重写我的 json 文件。我的意思是,我有编写它的功能。

def write_json(info, nombre_archivo="productos.json"):
    with open(nombre_archivo, "w") as p:
        json.dump(info, p)

我需要传递信息 write_json(**XXXXX**),但一直试图将我的信息存储archivo_r[i]["subtotal"]=subtotal在一个变量中以传递它和其他东西,但没有任何效果。我知道我做错了,但不知道如何解决。

标签: pythonjson

解决方案


处理完数据后,只需传递archivo_r给您的write_json()函数,就可以了。

顺便说一句,您可以像这样直接遍历 JSON 对象:

for section in archivo_r:
    precio = section["valor"]
    ...

然后,您可以替换所有实例archivo_r[i]with section,或任何您想调用的变量。


推荐阅读