这个问题已经有了答案:
Python to automatically select serial ports (for Arduino)
5个答案
我在使用mac/linux的python中自动检测arduino的串行端口时遇到问题。
我知道一个工作shell命令来查找端口;因为Arduino串行端口几乎总是以tty.usbmodem开头,所以可以找到ls /dev | grep tty.usbmodem的串行端口,它应该返回类似于tty.usbmodem262141的内容。
但是,我对如何从我的python代码调用这个shell命令感到困惑。我试过这个:

p = "/dev/" + str(subprocess.Popen('ls /dev | grep tty.usbmodem', shell=True).stdout)

这会使p变成/dev/tty.usbmodem262141
但是,现在我得到了/dev/None
如何修改shell脚本调用以返回正确的字符串?我试过使用several commands to call shell scripts,但都没有成功。

最佳答案

首先,如果您使用的是shell,那么您可以使用glob(*),这样您的命令将变为ls /dev/tty.usbmodem*
接下来,您甚至不必调用shell命令就可以在python中使用glob!
请考虑以下代码:

import glob

print(glob.glob("/dev/tty.usbmodem*"))

08-26 17:29