1

私の端末出力は

 $ 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'

コマンドに「*」を含める方法はありますか??

4

2 に答える 2

1

任意の tty に対してsetserial(を介して)呼び出したいと思いますか? pexpectあなたはおそらく次のようにすることができます:

import glob
import pexpect
for tty in glob.glob("/dev/ttyS*"):
    pexpect.run("setserial -g %s" % tty)
于 2012-12-20T11:04:32.450 に答える
0

spawn-questionのドキュメントであなたの質問に対する答えを見つけたと思います:

Pexpect は、リダイレクト、パイプ、またはワイルドカード (>、|、または *) などのシェル メタ文字を解釈しないことに注意してください。これはよくある間違いです。コマンドを実行し、それを別のコマンドにパイプする場合は、シェルも開始する必要があります。例えば::

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*")
于 2012-12-20T11:36:01.277 に答える