我的终端输出是
$ setserial -g /dev/ttyS*
/dev/ttyS0, UART: unknown, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
我希望pexpect.run()
>>> import pexpect
>>> pexpect.run("setserial -g /dev/ttyS1")
'/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3\r\n'
>>>
>>>
>>> pexpect.run("setserial -g /dev/ttyS*")
'/dev/ttyS*: No such file or directory\r\n'
有没有办法在命令中包含“*”??
答案 0 :(得分:1)
我想你想要setserial
(超过pexpect
)来获取任何tty?你也许可以这样做:
import glob
import pexpect
for tty in glob.glob("/dev/ttyS*"):
pexpect.run("setserial -g %s" % tty)
答案 1 :(得分:0)
我认为在documentation of the spawn-question:
中找到了问题的答案请记住,Pexpect不会解释shell元字符,例如 重定向,管道或外卡(>,|或*)。这是一个常见的错误。 如果要运行命令并通过另一个命令管道它 你还必须启动一个shell。例如::
child = pexpect.spawn('/bin/bash -c "ls -l | grep LOG > log_list.txt"') child.expect(pexpect.EOF)
你可以尝试一下吗?
pexpect.run("/bin/bash setserial -g /dev/ttyS*")