用for循环创建Python一行程序



我试图编写一行python脚本从PHP文档从linux终端执行。问题是,它有循环和评论,我不知道如何使它成为一行。脚本如下:

#!/usr/bin/env python
# Import required Python libraries
import RPi.GPIO as GPIO
import time
# Use BCM GPIO references instead of physical pin numbers
GPIO.setmode(GPIO.BCM)
# init list with pin numbers
pinList = [15]
# loop through pins and set mode and state to 'low'
for i in pinList: 
    GPIO.setwarnings(False)
    GPIO.setup(i, GPIO.OUT) 
    GPIO.output(i, GPIO.HIGH)
def trigger() :
        for i in pinList:
          GPIO.output(i, GPIO.HIGH)
          print "on"
#         GPIO.cleanup()
          break

try: 
    trigger()

except KeyboardInterrupt:
  print "  Quit" 
  # Reset GPIO settings
  GPIO.cleanup()

我从一个PHP文档运行这个,看起来像下面的:

<html>
<head>
<meta charset="UTF-8" />
  <link rel="stylesheet" type="text/css" href="css/style.css">
</head>

<?php
if (isset($_POST['LightON']))
{
exec("sudo python /home/pi/lighton.py");
}
if (isset($_POST['LightOFF']))
{
exec("sudo python /home/pi/lightoff.py");
}
?>
<form method="post">
<button class="btn" name="LightON">Light ON</button>&nbsp;
<button class="btn" name="LightOFF">Light OFF</button><br><br>
</form> 

</html>

这么多代码做的却很少!你当然不需要保留注释,如果你只设置一个引脚,那么你就不需要循环。

你可以这样做:

python -c "import RPi.GPIO as GPIO ; GPIO.setmode(GPIO.BCM) ; GPIO.setup(15, GPIO.OUT) ; GPIO.output(15, GPIO.HIGH)"

如果你需要做比这更复杂的事情,那么你应该使用脚本或使用一些Flask来将脚本作为web服务运行。更好的方法是使用Python + Flask。

最新更新