Comment mettre en variable le résultat de os.system()

Fermé
xunil2003 - Modifié par xunil2003 le 29/12/2014 à 16:24
dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 - 29 déc. 2014 à 17:21
Bonjour,

Je suis débutant python 2.7.x.

J'ai créé une fonction pour afficher le résultat d'une variable (im_iframe26_7).

def interogation_modules():
    global im_iframe26_7
    #iframe26_7
    ID = "243" 
    im_iframe26_7= os.system("curl 'http://%s:%s/data_request?id=lu_variableget&DeviceNum=%s&serviceId=urn:upnp-org:serviceId:TemperatureSensor1&Variable=CurrentTemperature' " % (IP, PORT, ID))
    print "im_iframe26_7_2 :", im_iframe26_7_2
    
interogation_modules()


Mais quand je l'exécute dans le terminal, le résultat s'affiche comme ceci :
laurent@MSI-GT683:~/python$ python /home/laurent/python/test3.py
20im_iframe26_7 : 0
laurent@MSI-GT683:~/python$ 

Le résultat (ici 20) s'affiche carêment à gauche et me met un 0 au lieu du résultat.
Pourquoi ?

Or il devrait m'afficher le résultat comme ceci :
im_iframe26_7 : 20


Pouvez-vous m'aiguiller ?

Merci.



1 réponse

dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 482
Modifié par dsy73 le 29/12/2014 à 17:21
Salut

global im_iframe26_7
As-tu vraiment besoin d'utiliser "global" ? Est-ce que retourner une valeur par la fonction ne serait pas un peu mieux ?

#iframe26_7
???

im_iframe26_7= os.system("curl 'http://%s:%s/data_request?id=lu_variableget&DeviceNum=%s&serviceId=urn:upnp-org:serviceId:TemperatureSensor1&Variable=CurrentTemperature' " % (IP, PORT, ID))
Plutôt que faire un appel à curl directement, je te propose d'utiliser une bibliothèque comme urllib2 ou pycurl. Ainsi tu pourras gérer les erreurs plus facilement.

print "im_iframe26_7_2 :", im_iframe26_7_2
Utilise le formatage avec % comme tu l'as fait pour la ligne avec curl et regarde bien le nom de tes variables.
0