2 votes

Raspberry PI Écriture CSV Python

Dans le cadre d'un projet, j'essaie d'utiliser un Raspberry PI pour capturer des réseaux WiFi et les écrire dans un fichier CSV. Si la qualité du signal est supérieure à 30/70, je veux capturer tous les SSID WiFi et leur adresse MAC correspondante et les enregistrer. Le problème semble être lié à la syntaxe, mais je ne parviens pas à comprendre ce qui ne va pas.

def wifiscan():
    ssid = []
    scanoutput = check_output(["iwlist", "wlan0", "scan"])
    curtime = time.strftime("%I:%M:%S")
    ssid.append(curtime)

    for line in scanoutput.split():
      line=str(line)
      if line.startswith("Quality"):
        line=line[8:-25]
      if(line>30 and line.startswith("ESSID")
        line=line[7:-1]
        ssid.append(line)
    with open('/home/pi/Desktop/Project/Results/'+'test.csv','a') as csvfile:
        csvwriter = csv.writer(csvfile,delimiter=',')
        csvwriter.writerow(ssid)
    print ssid

Mise à jour 1 : This is the output that I am looking to capture from: Mise à jour 2 : This is what happens with the updated code and the results out.

2voto

DSLima90 Points 1153

J'ai fait quelques changements à votre code mais je ne sais pas exactement ce que vous voulez accomplir ni quelles erreurs vous rencontrez, j'ai juste corrigé quelques logiques et sintax.

Tel qu'il est, le code ajoutera les données ssid à votre csv seulement si la qualité est meilleure que 30.

Faites-moi savoir si c'est ce que vous voulez.

def wifiscan():
    ssid = []
    scanoutput = check_output(["iwlist", "wlan0", "scan"])
    curtime = time.strftime("%I:%M:%S")
    ssid.append(curtime)
    quality = 0
    essid = ""
    for line in scanoutput.split('\n'):
      line=str(line)
      if line.startswith("Quality"):
        quality=int(line[8:-25])

      if quality>30 and line.startswith("ESSID"):
        line=line[7:-1]
        ssid.append(quality)
        ssid.append(line)
        with open('/home/pi/Desktop/Project/Results/'+'test.csv','a') as csvfile:
            csvwriter = csv.writer(csvfile,delimiter=',')
            csvwriter.writerow(ssid)
    print ssid

Notez que le code est sensible à tout changement dans le sintax de l'entrée que vous fournissez.

En outre, pour éviter les problèmes de changement de syntaxe dans votre saisie, vous devriez peut-être vous renseigner sur les expressions régulières en python : https://docs.python.org/2/howto/regex.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X