Bonjour,
Après une lecture du ping suivant la fonction ci dessous, la variable "reponse" lors de l'écriture dans fichier txt, j'ai l'erreur suivante :
Auriez-vous la solution car en python 3.4 cela fonctionne et je suis retourner en version 2.7 à cause de souci de compilation.
merci
cordialement
Erreur produite
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Unicode Encode Error: 'ascii' codec can't encode character u'\xae' in position 18: ordinal not in range(128)
affichage en console correcte
Pour voir pourquoi, j'ai placé la variable dans un tableau pour voir ce quelle donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Envoi d'une requête 'Ping' 192.168.0.13 avec 32 octets de données*: Réponse de 192.168.0.13*: octets=32 temps<1ms TTL=128 Réponse de 192.168.0.13*: octets=32 temps<1ms TTL=128 Réponse de 192.168.0.13*: octets=32 temps<1ms TTL=128 Réponse de 192.168.0.13*: octets=32 temps<1ms TTL=128 Statistiques Ping pour 192.168.0.13: Paquets*: envoyés = 4, reçus = 4, perdus = 0 (perte 0%), Durée approximative des boucles en millisecondes : Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
Partie du code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [u"\r\nEnvoi d'une requ\xeate 'Ping' 192.168.0.13 avec 32 octets de donn\xe9es\xa0:\r\nR\xe9ponse de 192.168.0.13\xa0: octets=32 temps<1ms TTL=128\r\nR\xe9ponse de 192.168.0.13\xa0: octets=32 temps<1ms TTL=128\r\nR\xe9ponse de 192.168.0.13\xa0: octets=32 temps<1ms TTL=128\r\nR\xe9ponse de 192.168.0.13\xa0: octets=32 temps<1ms TTL=128\r\n\r\nStatistiques Ping pour 192.168.0.13:\r\n Paquets\xa0: envoy\xe9s = 4, re\xe7us = 4, perdus = 0 (perte 0%),\r\nDur\xe9e approximative des boucles en millisecondes :\r\n Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms\r\n"] 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #! /usr/bin/python #_*_ coding:utf-8 _*_ # Python 2.7.7 # ------------------------------------------ # Analyse de ping # ------------------------------------------ def analyse_ping(): import socket,subprocess,os,sys ip = socket.gethostbyname(socket.gethostname()) encodage="cp850" # envoie un ping à l'ordinateur d'adresse ip, et retourne la réponse sous forme d'une liste de lignes unicode """ commande = ["ping ", ip] try: os.system('echo Analyse en cours...') out, _ = subprocess.Popen(commande, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False).communicate() except (ValueError, OSError) as err: return ("Erreur: %s" % (err.args[0],)).decode(encodage) reponse = out.decode(encodage) # importe le résultat dans fichier txt with open('ping.txt', 'w') as fichier: fichier.write(reponse) txtping.close()
Partager