2016-01-16 108 views
3

我想要一個python腳本來讀取文本文件的內容,如果它是21打開一個LED,但如果它是20關閉它。該腳本還在屏幕上打印出文本文件的內容。python讀取文件打開LED

打印出來的內容一切正常,但LED不亮。

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

我想在'if'導致問題之前關閉文件 –

+1

另外,您可能還想使用[contextmanager](http://preshing.com/20110920/the-python-with-statement-by-example/) )讀取文件。 – karlson

+0

我已經嘗試過這個取出,仍然不起作用 – user2669997

回答

2
print fh.read() 

讀取文件的全部內容,使文件指針在文件的結尾,所以當你

line = fh.read() 

什麼都不剩閱讀。

更改此:

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

這樣:

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

我不能對此進行測試代碼,因爲我沒有一個樹莓派,但這些代碼將確保line包含文本文件的全部內容。這可能實際上並不理想:如果該文件包含任何空格,例如空格或換行符,那麼if ... else測試將不會像您想要的那樣運行。您可以修復,通過做

line = line.strip() 

line = fh.read()

.strip方法剝掉任何開頭或結尾的空白。您也可以通過它傳遞一個參數來告訴它剝離什麼,詳情請參閱the docs

+0

這個作品謝謝你,我現在可以繼續我的學習 – user2669997