免责声明:我已经搜索了几天,没有太多运气。如果,尽管如此,在某个地方已经有了答案,我会很感激有人指点我。
我一直在使用RPi.GPIO和python(目前只有3.6),但在设置一些属性方面遇到了一些小麻烦。我一直在尝试使用用户输入来设置属性,方法如下:
mode = input("Enter preferred mode (BCM/BOARD): ").upper()
mode_chosen = "GPIO." + mode
setattr(GPIO, "setmode", mode_chosen)
显然,上面的代码将属性设置为GPIO.BCM
或GPIO.BOARD
作为字符串,这当然不起作用。我可以编写一个调用GPIO.setmode(GPIO.whatever)
的if-else循环,具体取决于用户输入,但我想知道是否有更优雅的方法。
我对python比较陌生,所以我很可能在这里错过了一些重要的信息,所以...提前感谢任何花时间回答。
答案 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)