os.system调用后代码未运行

时间:2013-08-10 19:15:21

标签: python python-2.7

在此代码中

while 1:
try:
    #print "try reading socket"
    os.system("echo 1 >/sys/class/leds/led0/brightness")

    data, wherefrom = s.recvfrom(1500, 0) # get the data from the socket

except (KeyboardInterrupt, SystemExit):
    #print "reraise error"
    raise
except timeout:
    print "No data received: socket timeout"
    #print sys.exc_info()[0]
    break
except:
    print "Unknown error occured with receiving data"
    break    

print (data + " " + repr(wherefrom[0]))

if (data.find("Start SID" + myserial[-4:]) != -1):

    os.system('sudo python /home/pi/simplesi_scratch_handler/scratch_gpio_handler2.py '+ str(repr(wherefrom[0])))

    for i in range (0,20):
        os.system("echo 0 >/sys/class/leds/led0/brightness")
        time.sleep(0.5)
        os.system("echo 1 >/sys/class/leds/led0/brightness")
        time.sleep(0.5)
    break

os.system("echo mmc0 >/sys/class/leds/led0/trigger")
s.close()
sys.exit()

后的代码

os.system('sudo python /home/pi/simplesi_scratch_handler/scratch_gpio_handler2.py '+ str(repr(wherefrom[0])))

似乎没有运行(代码闪烁一个LED,这不会发生 - 如果我把blink代码befoer os.system调用然后它工作)

我可以让python启动一个新的终端/ shell并运行我的第二个python prog吗?

问候

西蒙

1 个答案:

答案 0 :(得分:1)

修改您的sudoers文件(使用visudo命令)添加此行

myusername   ALL=(ALL:ALL) NOPASSWD:/home/pi/simplesi_scratch_handler/scratch_gpio_handler2.py

其中“myusername”是您打算以

运行程序的用户名

您还提到过您想在新shell中运行系统程序吗?

os.system('sudo python /home/pi/simplesi_scratch_handler/scratch_gpio_handler2.py '+ str(repr(wherefrom[0])) + " &")

运行程序的方式是它启动的shell不会阻止启动它的进程。

希望这有帮助