2013-08-06 146 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