2016-01-16 1 views
3

J'essaye d'obtenir un script python pour lire le contenu d'un fichier texte et si c'est 21 allumez une LED mais si c'est 20 éteignez-le. Le script imprime également le contenu du fichier texte à l'écran.Python lire le fichier pour allumer la LED

L'impression du contenu fonctionne correctement, mais la DEL ne s'allume pas.

import wiringpi2 
import time 

wiringpi2.wiringPiSetupGpio() 
wiringpi2.pinMode(17,1) 

while 1: 
    fh=open("test1.txt","r") 
    print fh.read() 
    line = fh.read() 
    fh.close() 
    if line == "21": 
     wiringpi2.digitalWrite(17,1) 
    elif line == "20": 
     wiringpi2.digitalWrite(17,0) 
    time.sleep(2) 
+0

Je pense que la fermeture du fichier avant que 'if' ne cause le problème –

+1

Aussi, vous pouvez utiliser un [contextmanager] (http://preshing.com/20110920/the-python-with-statement-by-example/) pour lire le fichier. – karlson

+0

J'ai essayé avec ce sorti et ne fonctionne toujours pas – user2669997

Répondre

2
print fh.read() 

lit le contenu du fichier, en laissant le curseur de fichier à la fin du fichier, donc quand vous

line = fh.read() 

il n'y a plus rien à lire.

Modifier ceci:

fh=open("test1.txt","r") 
print fh.read() 
line = fh.read() 
fh.close() 

à ceci:

fh=open("test1.txt","r") 
line = fh.read() 
print line 
fh.close() 

Je ne peux pas tester ce code, puisque je n'ai pas de Raspberry Pi, mais ce code veillerai à ce que contient line tout le contenu du fichier texte. Cela n'est peut-être pas souhaitable: si le fichier contient un espace, par exemple des espaces ou des retours à la ligne, vos tests if ... else ne se comporteront pas comme vous le souhaitez. Vous pouvez résoudre ce problème en faisant

line = line.strip() 

après line = fh.read()

La méthode .strip dénude les espaces blancs avant ou arrière. Vous pouvez également lui passer un argument pour lui dire quoi dépouiller, voir the docs pour plus de détails.

+0

Cela fonctionne merci, je peux maintenant aller de l'avant avec mon apprentissage – user2669997