我用Python编写了一个脚本,一旦执行它并按下连接到Raspberry Pi上GPIO的按钮,就应该:
该脚本确实打印出“有效!”并创建文件,但是一旦打开它,内容就会丢失。 这是脚本:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
# SET GPIO Button-Pin
gpio = 9
# Main Function
def main():
value = 0
while True:
if not GPIO.input(gpio):
value += 0.01
if value > 0:
if GPIO.input(gpio):
print "it works!"
with open("it_works.txt", "w") as file:
file.write("yay!")
main()
time.sleep(0.03)
return 0
if __name__ == '__main__':
GPIO.setmode(GPIO.BCM)
GPIO.setup(gpio, GPIO.IN)
main()
我对Python没有经验,所以我不能说我写错了什么。任何帮助将不胜感激,非常感谢!
答案 0 :(得分:0)
该文件永远不会关闭,with
语句会打开文件进行写入,这就是为什么您看到它正在创建的原因,但是在关闭文件之前,您需要在打开文件的过程中再次调用main()
一次又一次地递归。
我不熟悉GPIO的工作原理,所以我不确定您的用例,但请避免执行上述操作
答案 1 :(得分:0)
好像您正在尝试再次在main
语句内调用with
–可以说是递归调用。
您为什么再次打main
?
您可能还想添加到现有文件中-如果该文件存在。这里建议使用模式“ a”。
答案 2 :(得分:0)
我不知道RPi.GPIO软件包是什么,但是我认为您在错误的位置一遍又一遍地使用main函数,建议您在写入文件后关闭文件。使用以下代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
# SET GPIO Button-Pin
gpio = 9
# Main Function
def main():
value = 0
while True:
if not GPIO.input(gpio):
value += 0.01
if value > 0:
if GPIO.input(gpio):
print "it works!"
with open("it_works.txt", "w") as file:
file.write("yay!")
file.close()
main()
time.sleep(0.03)
return 0
if __name__ == '__main__':
GPIO.setmode(GPIO.BCM)
GPIO.setup(gpio, GPIO.IN)
main()
答案 3 :(得分:-1)
使用您提供的当前yìcode,正确设置GPIO的引脚,然后您的主电源进入一个循环,在该循环中,它继续以“写入”模式打开文件,但是您从未正确关闭它。在public class mat {
public int two(){
return 2;
}
}
声明之后添加file.close()
行:
以open(“ it_works.txt”,“ w”)作为文件:
with
file.close()
(注意识别)
此外,当您使用“ w”选项在python中打开文件时,它将截断文件的内容。我不知道这是否与您有关。我建议使用“ r +”或“ a”