如何在 pexpect 中查看输出?

sup*_*ren 3 python pexpect

我写了这个程序:

[mik@mikypc ~]$ cat ftp.py 
 #!/usr/bin/env python

 # This connects to the rediris ftp site
 # 
 import pexpect
 child = pexpect.spawn('ftp ftp.rediris.es')

 child.expect('Name .*: ')
 child.sendline('anonymous')
 child.expect('ftp> ')
 child.sendline('noah@example.com')
 child.expect('ftp> ')
 child.sendline('lcd /tmp')
 child.expect('ftp> ')
 child.sendline('pwd')
 child.expect('ftp> ')
 child.sendline('bye')

[mik@mikypc ~]$ ./ftp.py 
[mik@mikypc ~]$ 
[mik@mikypc ~]$ 
[mik@mikypc ~]$ 
Run Code Online (Sandbox Code Playgroud)

但我看不到输出。我怎么能看到?。当我执行它时,我什么也看不到。我怎么能看到输出?

pyn*_*exj 5

根据pexpect 文档

logfile_readlogfile_send构件可被用于分别登录从子和输出发送到子输入。有时您不想看到您写给孩子的所有内容。您只想记录孩子发回的内容。例如:

child = pexpect.spawn('some_command')
child.logfile_read = sys.stdout
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Python 3,您将需要传递一个编码以在上面的代码中生成。
要单独记录发送给孩子的输出,请使用logfile_send

child.logfile_send = fout 
Run Code Online (Sandbox Code Playgroud)

请参阅以下示例:

child = pexpect.spawn('some_command')
child.logfile_read = sys.stdout
Run Code Online (Sandbox Code Playgroud)