I got error : UnboundLocalError: local variable 'porc' referenced before assignment
I got error : UnboundLocalError: local variable 'porc' referenced before assignment
我正在尝试执行这段代码
command3.py
import microgear.client as microgear
import os
os.system("sudo pigpiod")
import pigpio
import RPi.GPIO as GPIO
import subprocess
piMASTER = pigpio.pi()
####################### NETPIE ####################
appid = 'xxxxxxxxx'
gearkey = 'xxxxxxxxxx'
gearsecret = 'xxxxxxxxxxxxxxxxxxxx'
microgear.create(gearkey,gearsecret,appid,{'debugmode': True})
def connection():
print "Now I am connected with netpie"
def subscription(topic,message):
print topic+" "+message
if message == "ON":
proc = subprocess.Popen(["sudo", "python", "LED3.py"], shell = False)
else:
piMASTER.write(4, 0)
proc.terminate()
def disconnect():
print "disconnect is work"
microgear.setalias("switch")
microgear.on_connect = connection
microgear.on_message = subscription
microgear.on_disconnect = disconnect
microgear.subscribe("/mails")
microgear.connect(True)
LED3.py
import time
import pigpio
import RPi.GPIO as GPIO
pi= pigpio.pi()
while True:
pi.write(4, 1) #Set LED pin 7 to HIGH
time.sleep(1) #Delay 1 second
pi.write(4, 0) #Set LED pin 7 to LOW
time.sleep(1)
收到消息时
如果消息 "ON" LED3.py 仍然有效
但是如果消息是 "OFF" 我得到这个错误
Traceback (most recent call last):
File "command3.py", line 47, in <module>
microgear.connect(True)
File "/usr/local/lib/python2.7/dist-packages/microgear/client.py", line 143, in connect
microgear.mqtt_client.loop_forever()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1378, in loop_forever
rc = self.loop(timeout, max_packets)
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 897, in loop
rc = self.loop_read(max_packets)
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1177, in loop_read
rc = self._packet_read()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1766, in _packet_read
rc = self._packet_handle()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2239, in _packet_handle
return self._handle_publish()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2414, in _handle_publish
self._handle_on_message(message)
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2574, in _handle_on_message
self.on_message(self, self._userdata, message)
File "/usr/local/lib/python2.7/dist-packages/microgear/client.py", line 105, in client_on_message
on_message(msg.topic,str(msg.payload))
File "command3.py", line 35, in subscription
proc.terminate()
UnboundLocalError: local variable 'proc' referenced before assignment
*抱歉,如果我在 english.And 方面表现不佳,我才刚刚开始学习 python。
显然,如果 message
不是 (!=
) "ON"
,那么您在分配 proc
之前引用它,就像错误明确指出的那样:
if message == "ON":
proc = subprocess.Popen(["sudo", "python", "LED3.py"], shell = False) # assigning proc
else:
piMASTER.write(4, 0)
proc.terminate() # referencing proc
如果 message
不等于 OFF
,Python 将执行 proc.terminate()
而不会定义 proc
。
您需要在 if
语句之前实例化 proc
。 (另一回事 - 我不清楚 subprocess
到底做了什么。)
我正在尝试执行这段代码
command3.py
import microgear.client as microgear
import os
os.system("sudo pigpiod")
import pigpio
import RPi.GPIO as GPIO
import subprocess
piMASTER = pigpio.pi()
####################### NETPIE ####################
appid = 'xxxxxxxxx'
gearkey = 'xxxxxxxxxx'
gearsecret = 'xxxxxxxxxxxxxxxxxxxx'
microgear.create(gearkey,gearsecret,appid,{'debugmode': True})
def connection():
print "Now I am connected with netpie"
def subscription(topic,message):
print topic+" "+message
if message == "ON":
proc = subprocess.Popen(["sudo", "python", "LED3.py"], shell = False)
else:
piMASTER.write(4, 0)
proc.terminate()
def disconnect():
print "disconnect is work"
microgear.setalias("switch")
microgear.on_connect = connection
microgear.on_message = subscription
microgear.on_disconnect = disconnect
microgear.subscribe("/mails")
microgear.connect(True)
LED3.py
import time
import pigpio
import RPi.GPIO as GPIO
pi= pigpio.pi()
while True:
pi.write(4, 1) #Set LED pin 7 to HIGH
time.sleep(1) #Delay 1 second
pi.write(4, 0) #Set LED pin 7 to LOW
time.sleep(1)
收到消息时 如果消息 "ON" LED3.py 仍然有效 但是如果消息是 "OFF" 我得到这个错误
Traceback (most recent call last):
File "command3.py", line 47, in <module>
microgear.connect(True)
File "/usr/local/lib/python2.7/dist-packages/microgear/client.py", line 143, in connect
microgear.mqtt_client.loop_forever()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1378, in loop_forever
rc = self.loop(timeout, max_packets)
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 897, in loop
rc = self.loop_read(max_packets)
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1177, in loop_read
rc = self._packet_read()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1766, in _packet_read
rc = self._packet_handle()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2239, in _packet_handle
return self._handle_publish()
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2414, in _handle_publish
self._handle_on_message(message)
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 2574, in _handle_on_message
self.on_message(self, self._userdata, message)
File "/usr/local/lib/python2.7/dist-packages/microgear/client.py", line 105, in client_on_message
on_message(msg.topic,str(msg.payload))
File "command3.py", line 35, in subscription
proc.terminate()
UnboundLocalError: local variable 'proc' referenced before assignment
*抱歉,如果我在 english.And 方面表现不佳,我才刚刚开始学习 python。
显然,如果 message
不是 (!=
) "ON"
,那么您在分配 proc
之前引用它,就像错误明确指出的那样:
if message == "ON":
proc = subprocess.Popen(["sudo", "python", "LED3.py"], shell = False) # assigning proc
else:
piMASTER.write(4, 0)
proc.terminate() # referencing proc
如果 message
不等于 OFF
,Python 将执行 proc.terminate()
而不会定义 proc
。
您需要在 if
语句之前实例化 proc
。 (另一回事 - 我不清楚 subprocess
到底做了什么。)