2013-08-06 109 views
1

我超新的Python和我有一个简单的问题 我有这个功能蟒蛇pexepect新线

def testU(self): 
     b = pexpect.spawn('users') 
     b.expect('root user2') 

并能正常工作.. 这个功能

def testW(self): 
    b = pexpect.spawn('whoami') 
    b.expect('root') 

,它也很好。

但是当我试图同时拥有他们在一起,我得到一个错误,我想这是因为我的方式写下了新的生产线

def testZ(self): 
    b = pexpect.spawn('whoami; users') 
    b.expect('root\nroot user2') 

所以,我应该如何代表换行我串?

在此先感谢

回答

2

你不能把两个命令放在一个单一的产卵。你可以使用一个技巧:

b = pexpect.spawn("bash -c 'whoami;users'") 

要匹配换行符,你应该使用:

b.expect('root\r\nroot user2') 

终端TTY设备驱动程序(哑,VT100,ANSI,xterm中,等)都使用CR/LF组合来标记行结束。 UNIX仅使用换行符来结束文件中的行,但不涉及TTY设备。

您可以从here了解更多关于它的信息。

+0

它似乎现在有效,但它不接受有两个功能在产卵:我得到这个错误:'ExceptionPexpect:该命令没有找到或不可执行:whoami ;.' 你知道如何把2个命令? – CSawy

+0

是的。我只是想在我的回答中更新这个。你不能把两个命令放在一个spawn中。但你可以做一个窍门。看到我更新的答案。 @ user1763553 – zhangyangyu

+0

完美运作。谢谢 :) – CSawy