2016-08-29 47 views
0

我正在開發代碼用戶交互使用pexpect爲本地終端Mac(不是遠程SSH)而不是使用子進程。但我不知道我做了什麼錯下列情況下,接收空輸出:pexpect在本地計算機上的終端

1)

child = pexpect.spawn('ls') 
child.expect(pexpect.EOF) 
output = child.before 
print output 

輸出是空

2)

child = pexpect.spawn('ls -l') 
child.expect(pexpect.EOF) 
output = child.before 
print output 

它效果很好。輸出爲文件和文件夾的列表,就像我們在本地終端

3)-1型LS

child = pexpect.spawn('pwd') 
child.expect(pexpect.EOF) 
output = child.before 
print output 

輸出是空

輸出必須存在的,在3不爲空案件正確嗎?你知道爲什麼'ls'和'pwd'是空的,但'ls -l'不是?我應該怎麼做才能解決'空'輸出?

此致 奎燕埠·特倫

+0

剛纔檢查在Ubuntu上,所有3個場景做工精細。它必須在任何平臺上以相同的方式工作。 – alexanderlukanin13

+0

非常感謝@ alexanderlukanin13我正在使用Macbook Pro OSX。你能不能讓我知道你現在使用哪個版本的pexpect?問候,Quyen Tran –

+0

最新版本:'pexpect == 4.2.1' – alexanderlukanin13

回答

1

對於運行不需要的交互命令,產卵是不正確的方法。最好使用pexpect.run方法並將輸出作爲返回值。

pexpect.spawn更適合產生子進程,您需要發送命令並期待響應。你的代碼工作我的終端上正常,但如果你不能得到它你完成後,使用run方法

child = pexpect.spawn('ls') 
child.expect(pexpect.EOF) 
0 
print child.before 
codes program.c << output of ls command 
相關問題