【问题标题】:python read file to turn on LEDpython读取文件以打开LED
【发布时间】:2016-01-16 10:53:56
【问题描述】:

我正在尝试获取一个 python 脚本来读取文本文件的内容,如果它是 21 则打开 LED,但如果它是 20 则将其关闭。该脚本还会在屏幕上打印出文本文件的内容。

内容打印正常,但 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)

【问题讨论】:

  • 我认为在if 之前关闭文件会导致问题
  • 另外,您可能想使用contextmanager 来读取文件。
  • 我试过把这个拿出来还是不行

标签: python raspberry-pi wiringpi


【解决方案1】:
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()

我无法测试此代码,因为我没有 Raspberry Pi,但该代码将确保 line 包含文本文件的全部内容。这实际上可能是不可取的:如果文件包含 任何 空格,例如空格或换行符,那么您的 if ... else 测试将不会像您想要的那样运行。你可以通过这样做来解决这个问题

line = line.strip() 

line = fh.read()之后

.strip 方法去除任何前导或尾随空格。你也可以给它传递一个参数来告诉它要剥离什么,详见the docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 2021-12-21
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多