Problème en python : os.popen
hachcoco
-
IoNAce -
IoNAce -
Bonjour !
J'ai un problème avec un script que j'ai fait en python :
Comme il doit aller chercher des infos sur le net j'ai fais une fonction pour tester la présence d'une connection, ce qui est indispensable chez moi :-(
La voila :
def testConnectionNet() :
ping=os.popen("ping 72.14.253.104 -c 1","r")
lignes=ping.readlines()
for ligne in lignes :
print ligne
net = re.search("(1 received)",ligne)
if net :
print "verification de la presence d'une connection internet...OK"
ping = ""
return 1
ping = ""
print "verification de la presence d'une connection internet...ERROR"
return 0
l'addresse, c'est google.com, je ne prend pas trop de risques :p
Par contre, il fait le test à chaque erreur qu'il trouve, et au bout d'un certian temps il me sort :
ping=os.popen("ping 72.14.253.104 -c 1","r")
OSError: [Errno 24] Too many open files
Voila, j'aimerais donc savoir si je fais quelque chose mal (le test de la présence d'internet est indispensable dans ce cas là).
Sinon avez vous une autre méthode pour tester ça ?
Merci beaucoups et bonne journée !
PS : je suis sous linux
J'ai un problème avec un script que j'ai fait en python :
Comme il doit aller chercher des infos sur le net j'ai fais une fonction pour tester la présence d'une connection, ce qui est indispensable chez moi :-(
La voila :
def testConnectionNet() :
ping=os.popen("ping 72.14.253.104 -c 1","r")
lignes=ping.readlines()
for ligne in lignes :
print ligne
net = re.search("(1 received)",ligne)
if net :
print "verification de la presence d'une connection internet...OK"
ping = ""
return 1
ping = ""
print "verification de la presence d'une connection internet...ERROR"
return 0
l'addresse, c'est google.com, je ne prend pas trop de risques :p
Par contre, il fait le test à chaque erreur qu'il trouve, et au bout d'un certian temps il me sort :
ping=os.popen("ping 72.14.253.104 -c 1","r")
OSError: [Errno 24] Too many open files
Voila, j'aimerais donc savoir si je fais quelque chose mal (le test de la présence d'internet est indispensable dans ce cas là).
Sinon avez vous une autre méthode pour tester ça ?
Merci beaucoups et bonne journée !
PS : je suis sous linux
A voir également:
- Problème en python : os.popen
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Ce programme est écrit en python il construit un mot secret ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
3 réponses
Hello
Je sais que la reponse vient apres quelques mois mais j'ai trouve ton script interessant aussi je l'ai corrige pour qu'il fonctionne a peu pres correctement. J'espere que tu as pu resoudre ton probleme depuis ;-)
PS : la machine que j'ai utilise pour coder est sous Windows XP. Le programme PING a des params differents, c'est donc l'option -n que j'ai utilise pour n'envoyer qu'un seul ping (a toi de modifier pour que cela fonctionne sous nux)
A note egalement que PING est en francais sous Windows, il faudra changer le critere de recherche par l'equivalent en anglais (lost = 0 je suppose, a verifier)
@++
Je sais que la reponse vient apres quelques mois mais j'ai trouve ton script interessant aussi je l'ai corrige pour qu'il fonctionne a peu pres correctement. J'espere que tu as pu resoudre ton probleme depuis ;-)
PS : la machine que j'ai utilise pour coder est sous Windows XP. Le programme PING a des params differents, c'est donc l'option -n que j'ai utilise pour n'envoyer qu'un seul ping (a toi de modifier pour que cela fonctionne sous nux)
import os, re def testConnectionNet() : lPing = os.popen('ping google.fr -n 1','r') sLigne = lPing.read() lResult = re.search('(perdus = 0)',sLigne) try: if ( len(lResult.groups(0)) == 1 ): return 'Ok' except: pass return None print 'Connexion internet :', testConnectionNet()
A note egalement que PING est en francais sous Windows, il faudra changer le critere de recherche par l'equivalent en anglais (lost = 0 je suppose, a verifier)
@++
Je recommanderais d'utiliser le module subprocess plutôt que popen.
Il permet un meillieur contrôle.
Exemple: https://sebsauvage.net/python/snyppets/index.html#capture_output
Il permet un meillieur contrôle.
Exemple: https://sebsauvage.net/python/snyppets/index.html#capture_output