pexpect:期待各行

问题描述 投票:1回答:2

我正在尝试使用pexpect从服务器中提取文件,但似乎什么也没做(甚至没有错误消息)。这是我的代码:

import pexpect
child=pexpect.spawn('scp -r user@host:route/file .')
child.expect("user@host's password:")
child.sendline('password')

我认为问题出在child.expect命令中,因为“ user @ host的密码:”是大约30行的欢迎消息的最后一行,其中包括特殊字符。有什么方法可以告诉pexpect期望不止一条线,或者仅仅是什么?还是只是等待X秒钟然后输入密码?

编辑:它与child.wait()命令一起使用,但在第9个文件处停止。碰巧第十号很大(大约250Mb),我不知道它是否与它有关……谢谢!

编辑:我把这行]

child.logfile=sys.stdout

之后

child=pexpect.spawn('scp -r user@host:route/file .')

并且我在屏幕上得到的不是文件,而是欢迎消息,它以“ user @ host的密码:”结尾,然后我在同一行中看到了密码,但仍然没有得到文件。

任何人都知道如何解决它?

谢谢大家!

我正在尝试使用pexpect从服务器中提取文件,但似乎什么也没做(甚至没有错误消息)。这是我的代码:import pexpect child = pexpect.spawn('scp -r user @ host:route / file。')...

python edit pexpect
2个回答
0
投票

您可以查看pexpect的属性缓冲区:-pexpect.before#匹配pexpect.expect中指定的正则表达式之前解析的字符串-pexpect.buffer#当前在缓冲区中的字符串-pexpect.after#匹配pexpect.expect中指定的正则表达式后解析的字符串

[请记住child.expect()是一个阻塞的调用,直到它与正则表达式匹配或遇到EOF / TIMEOUT异常时才返回。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.