使用用户输入来设置属性

时间:2018-03-25 09:10:33

标签: python gpio

免责声明:我已经搜索了几天,没有太多运气。如果,尽管如此,在某个地方已经有了答案,我会很感激有人指点我。

我一直在使用RPi.GPIO和python(目前只有3.6),但在设置一些属性方面遇到了一些小麻烦。我一直在尝试使用用户输入来设置属性,方法如下:

mode = input("Enter preferred mode (BCM/BOARD): ").upper()
mode_chosen = "GPIO." + mode
setattr(GPIO, "setmode", mode_chosen)

显然,上面的代码将属性设置为GPIO.BCMGPIO.BOARD作为字符串,这当然不起作用。我可以编写一个调用GPIO.setmode(GPIO.whatever)的if-else循环,具体取决于用户输入,但我想知道是否有更优雅的方法。

我对python比较陌生,所以我很可能在这里错过了一些重要的信息,所以...提前感谢任何花时间回答。

2 个答案:

答案 0 :(得分:2)

一种方法是使用词典:

choices = { "BCM": GPIO.BCM, "BOARD": GPIO.BOARD }
mode_chosen = choices[mode]

答案 1 :(得分:0)

您可以使用getattr从GPIO模块获取属性,然后在setattr中使用该属性:

mode = input("Enter preferred mode (BCM/BOARD): ").upper()
mode_chosen = getattr(GPIO, mode)
setattr(GPIO, "setmode", mode_chosen)