我写了这个程序:
[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 ~]$
但是我看不到输出,我怎么能看到呢?我执行的时候什么都看不到,我怎么能看到输出呢?
3条答案
按热度按时间xjreopfe1#
根据pexpect doc:
logfile_read
和logfile_send
成员可用于分别记录来自子代的输入和发送给子代的输出。有时,您不希望看到写入子代的所有内容,而只希望记录子代发回的内容。例如:如果您使用的是Python 3,则需要在上面的代码中传递一个编码来生成。
要单独记录发送给子进程的输出,请使用
logfile_send
:参见以下示例:
cx6n0qe32#
从pexpect文档中:
每次调用
expect()
后,before
和after
属性将设置为子应用程序打印的文本。before
属性将包含预期字符串模式之前的所有文本。after
字符串将包含与预期模式匹配的文本。因此,在战略位置使用
print(child.before)
应该可以满足您的需要。blpfk2vs3#
您还可以将pexpect的输出记录到日志文件中:
然后发送行的每个响应都将打印到日志中