en python comment fait on? (python object is not iterable)

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

en python comment fait on? (python object is not iterable)

Message par papoo »

je débute en python et je ne sais pas faire un truc qui doit etre simple mais sur lequel je but depuis deux jours
dans mon script une fonction get_my_measures me recupere les données d'une api.

Code : Tout sélectionner

measures = client.get_measures(limit=5)
lorsque je liste chaque objet un par un, les informations sont disponibles soit avec l'iteration 0,1 ou 2(jamais la même)

Code : Tout sélectionner

print "Your 0 date: %s " % measures[0].date
print "Your 1 date: %s " % measures[1].date
print "Your 2 date: %s " % measures[2].date

print "Your 0 measured weight: %s kg" % measures[0].weight
print "Your 1 measured weight: %s kg" % measures[1].weight
print "Your 2 measured weight: %s kg" % measures[2].weight

print "Your 0 measured fat_free_mass: %s kg" % measures[0].fat_free_mass
print "Your 1 measured fat_free_mass: %s kg" % measures[1].fat_free_mass
print "Your 2 measured fat_free_mass: %s kg" % measures[2].fat_free_mass

print "Your 0 measured fat_ratio: %s percent" % measures[0].fat_ratio
print "Your 1 measured fat_ratio: %s percent" % measures[1].fat_ratio
print "Your 2 measured fat_ratio: %s percent" % measures[2].fat_ratio

print "Your 0 measured fat_mass_weight: %s kg" % measures[0].fat_mass_weight
print "Your 1 measured fat_mass_weight: %s kg" % measures[1].fat_mass_weight
print "Your 2 measured fat_mass_weight: %s kg" % measures[2].fat_mass_weight

print "Your 0 measured heart_pulse: %s p/m" % measures[0].heart_pulse
print "Your 1 measured heart_pulse: %s p/m" % measures[1].heart_pulse
print "Your 2 measured heart_pulse: %s p/m" % measures[2].heart_pulse
cela donne comme résultat :

Code : Tout sélectionner

Your 0 date: 2017-04-24T07:08:46+00:00
Your 1 date: 2017-04-24T07:08:46+00:00
Your 2 date: 2017-04-24T07:08:46+00:00
Your 0 measured weight: None kg
Your 1 measured weight: None kg
Your 2 measured weight: 92.52 kg
Your 0 measured fat_free_mass: None kg
Your 1 measured fat_free_mass: None kg
Your 2 measured fat_free_mass: 58.93 kg
Your 0 measured fat_ratio: None percent
Your 1 measured fat_ratio: None percent
Your 2 measured fat_ratio: 27.407 percent
Your 0 measured fat_mass_weight: None kg
Your 1 measured fat_mass_weight: None kg
Your 2 measured fat_mass_weight: 18.59 kg
Your 0 measured heart_pulse: None p/m
Your 1 measured heart_pulse: 92 p/m
Your 2 measured heart_pulse: None p/m
lorsque je veux faire une boucle for pour retrouver mes petits simplement

Code : Tout sélectionner

i = 0
for weight, fat_free_mass, fat_ratio, fat_mass_weight, heart_pulse in measures[i]:
	print "Your measured weight: %s kg" % weight
	print "Your measured fat_free_mass: %s kg" % fat_free_mass
	print "Your measured fat_ratio: %s percent" % fat_ratio
	print "Your measured fat_mass_weight: %s kg" % fat_mass_weight
	print "Your measured heart_pulse: %s p/m" % heart_pulse
	i = i +1
il me retourne une erreur

Code : Tout sélectionner

TypeError: 'MeasureGroup' object is not iterable
j'ai aussi testé

Code : Tout sélectionner

for list in measures:
    for x in list:
        print x
avec le même résultat
apparemment la fonction

Code : Tout sélectionner

def get_measures(self, **kwargs):
        r = self.request('measure', 'getmeas', kwargs)
        return WithingsMeasures(r)
me retourne les arguments sous forme de dictionnaire (mais je ne sais pas quoi faire de cette information)

pourriez vous svp m'aider pour débloquer la situation ?
d'avance merci
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Répondre