C'est mon code et je veux enregistrer ou écrire l'objet de la personne dans score_test.txt comme ce format j'essaye de sauvegarder comme le sien

F.write (item.name, item.mark) il a dit qu'un seul argument autorise mais 2 arguments

Alors j'essaie d'écrire une erreur f.write (item.name + ',' + item.mark) ytpecaste ou quelque chose

Je veux enregistrer ou écrire l'obj de la personne dans score_test.txt comme suit:

'John',8
'Diago',140
'Ronaldo',92

Ma définition de classe:

class person:
    def __init__(self, name, mark):
        self.name = name
        self.mark = mark    
    # creating list   

list = []    
# appending instances to list
list.append(person('John', 8))
list.append(person('Diago', 140))
list.append(person('Ronaldo', 92))
new_list = sorted(list, key=lambda x: x.mark, reverse=True)

#save or write object to list

Je suis coincé ici

  with open('score_test.txt', 'w') as f:
        for item in new_list:
            f.write(" how to write saving code here ?? my question")
-1
joseph sim 5 mai 2020 à 18:26

3 réponses

Meilleure réponse

Vous pouvez faire quelque chose comme ceci, sur la classe, définissez une fonction comme toString en java, qui vous permet d'obtenir une chaîne de nom et de marque, et vous pouvez écrire dans le fichier:

class person :
...
def tostring(self) :
    return self.name+' : '+self.mark

Puis sur votre boucle:

 with open('score_test.txt', 'w') as f:
    for item in new_list:
        f.write(item.tostring())
0
Mohamed Karam 5 mai 2020 à 15:32

Remplacez votre dernière ligne par:

f.write("{}, {} \n".format(item.name, item.mark))

La méthode format écrira item.name au lieu des premiers braquets puis item.mark au lieu du second. Le '\ n' le fait écrire sur une autre ligne.

0
ClemPat 5 mai 2020 à 15:36

Une autre façon de procéder consiste à remplacer la méthode __str__ dans le classe.

class Person():

    def __init__(self, name ,mark):
        self.name = name
        self.mark  = mark


    def __str__(self):
        return "{}, {}".format(self.name, str(self.mark))


list = []    
# appending instances to list
list.append(Person('John', 8))
list.append(Person('Diago', 140))
list.append(Person('Ronaldo', 92))
new_list = sorted(list, key=lambda x: x.mark, reverse=True)


with open('score_test.txt', 'w') as f:
    for person in new_list:
        f.write("{}\n".format(person))

J'espère que cela t'aides.

0
saurjog 5 mai 2020 à 18:23