导入外部py脚本仅在声明

时间:2017-01-03 07:08:15

标签: python-3.x python-import

我的Raspberry Pi 3中有2个.py脚本.Script1.py只是一个按钮脚本,Script2.py是主脚本。我想只在Script1中按下按钮运行Script2。

现在我知道之前已经问过这个Q.我已经阅读了他们的解决方案,但没有一个能为我工作。

我基本上想要将Script2作为模块运行。这样整个脚本也可以运行,我也可以从该脚本中获取变量。这就是我正在做的事情

Script1.py

Import  Script2
Import Rpi.GPIO

if_button_is_pressed:
os.system("Script2.py")

是的,我也试过过execfile。不行。问题是,当我运行Script1时,Script2也会自动运行,而不必等待按下按钮。看起来像导入功能导入脚本并运行它。

我的下一步是这个

Import Rpi.GPIO

if_button_is_Pressed:
import Script2

这样运行正常,但仅限第一次执行。如果我插入while(True)循环,在导入并运行Script2之后,它将在下次运行。

Import Rpi.GPIO

while(True)
if_button_is_pressed:
import Script2

当我按下按钮时,Script2运行正常。然后当我再次按下按钮时,它不会运行Script2。只需跳过它然后转到下一个命令。

可能是什么问题?提前谢谢

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方式:

Import Rpi.GPIO
Import cv2

while(button_is_pressed):
    import Script2
    cv2.waitKey(0)

按下按钮时应该捕捉动作并使用此值进行检查。

cv2.waitKey() 是键盘绑定功能。它的参数是以毫秒为单位的时间。该函数等待任何键盘事件的指定毫秒。如果您在该时间内按任意键,程序将继续。如果为0,则无限期等待键击。它也可以设置为检测特定的键击,如果按下键a等,我们将在下面讨论。取自here

答案 1 :(得分:0)

将通常在导入时运行的脚本2部分放入不接受任何参数的函数中。这可能是整个脚本。我们调用函数run

在脚本1中,像往常一样导入脚本2。现在导入过程中不会运行任何内容。使用script2.run()回复按钮点击次数。

如果您仍然需要能够将脚本2作为脚本运行,请在其末尾添加以下行(在run函数之外):

if __name__ == '__main__':
   run()