今天在写一个Python脚本时遇到一个问题——同样的代码,在Python终端执行没问题,在脚本里执行却不行,就是下面这段代码:

import pexpect

password = 'test2014'

p = pexpect.spawn('scp test.tgz root@192.168.1.200:/home/backup/')
index = p.expect(['password', 'yes/no'])
if index == 0:
    p.sendline(password)
else:
    p.sendline('yes')
    p.expect('password')
    p.sendline(password)

读者如果不信的话可以对以上代码进行修改测试。

最后,通过百度,我找到了解决方法——就是在末尾加一行,最终的代码如下:

import pexpect

password = 'test2014'

p = pexpect.spawn('scp test.tgz root@192.168.1.200:/home/backup/')
index = p.expect(['password', 'yes/no'])
if index == 0:
    p.sendline(password)
else:
    p.sendline('yes')
    p.expect('password')
    p.sendline(password)
p.read()

为什么要加这一行才能成功,我还解释不了,有能人能解释的请直接回复本帖,谢谢。

posted on 2016-06-28 10:02  昨、夜星辰  阅读(181)  评论(0编辑  收藏  举报