JSON输出不正确-Python项目

问题描述 投票:1回答:1

我必须开发一个程序,在json文件中存储鸡尾酒的列表,为了修改一个元素,删除一个元素,添加一个元素,这些列表必须可读。json文件的内容永远都不正确,我不明白添加鸡尾酒时它的变化,因此我的代码肯定有问题。

这是我的代码:

import json
from cocktail import Cocktail
from cocktail import Ingrediente


class Carta:
    def __init__(self, filename):
        self.__filename = filename
        self.__lista = []


        try:
            file=open(self.__filename,"r")
            self.__lista.append(json.load(file))
            print(self.__lista)
        except:
            file=open(self.__filename, "w")
            file.close()
            file = open(self.__filename, "r")


    def add(self, c):
        print(self.__lista)
        self.__lista.append(str(c))
        #print(self.__lista)


    def write_to_json_file(self):
        file=open(self.__filename,"w")
        #print(self.__lista)
        for c in self.__lista:

            json.dump(c, file, indent=2)
        file.close()


carta=Carta("prova.json")
cocktail=Cocktail()
cocktail.set_nome("Rum e Cola")
cocktail.set_alc("Y")
cocktail.set_prep("Versa la cola nel rum")
cocktail.set_bicchiere("Di vetro")
cocktail.set_gen("Pesante")
cocktail.set_diff("M")
cocktail.set_img("https://rivistaidra.files.wordpress.com/2012/08/img_poc32_44.jpg")

ingrediente=Ingrediente()
ingrediente.set_nome("Rum")
ingrediente.set_quantita("100ml")
#
ingrediente2=Ingrediente()
ingrediente2.set_nome("Coca-Cola")
ingrediente2.set_quantita("150ml")
#
cocktail.add_ingrediente(ingrediente)
cocktail.add_ingrediente(ingrediente2)
#
carta.add(cocktail)

carta.write_to_json_file()

也许看鸡尾酒课可能很有用:

import requests
import json
class Cocktail:
    def __init__(self):
        self.cocktail = {"nome": "", "alc": "", "diff": "", "gen": "", "bicchiere":"", "prep":"", "img":"", "ingredienti": []}

    def set_nome(self,nome):
        self.cocktail["nome"] = nome

    def set_alc(self, alc):
        self.cocktail["alc"]= alc

    def set_diff(self,diff):
        self.cocktail["diff"]=diff

    def set_gen(self, gen):
        self.cocktail["gen"]=gen

    def set_bicchiere(self, bicchiere):
        self.cocktail["bicchiere"]=bicchiere

    def set_prep(self, prep):
        self.cocktail["prep"]=prep

    def add_ingrediente(self,ingrediente):
        self.cocktail["ingredienti"].append(ingrediente.ingrediente)

    def set_img(self, url):
        self.cocktail["img"]=url

    def __str__(self):
        # trasforma in stringa json
        #indent = 2 serve per indentare meglio il file json e renderlo piu' leggibile
        return str(self.cocktail)

class Ingrediente:
    def __init__(self):
        self.ingrediente={"quantita": "", "nome": ""}

    def set_quantita(self, quantita):
        self.ingrediente["quantita"]=quantita

    def set_nome(self,nome):
        self.ingrediente["nome"]=nome

    def __str__(self):
        return json.dumps(self.ingrediente)

# c=Cocktail()
# c.set_nome("Tuzzia")
# c.set_diff("M")
# c.set_gen("Superalcolico")
# c.set_bicchiere("Vetro")
# c.set_prep("Fallo")
# c.set_alc("Y")
# c.set_img("https://rivistaidra.files.wordpress.com/2012/08/img_poc32_44.jpg")
#
# i=Ingrediente()
# i.set_nome("Tuz")
# i.set_quantita("20ml")
# c.add_ingrediente(i)
#
# print(str(c))

提前感谢。

python json pycharm
1个回答
0
投票

尝试打开带有附加选项'+ a'的文件。和__lista = dict()

© www.soinside.com 2019 - 2024. All rights reserved.