蟒蛇Pexpect的sendcontrol按键字符(python pexpect sendcontr

2019-06-25 23:33发布

我与蟒蛇Pexpect的模块工作自动执行任务,我需要找出关键字符sendcontrol使用帮助。 怎么可能一个发送CONTROLKEY ENTER? 并为未来参考我们怎样才能找到问题的关键字符?

这里是我工作的代码。

#!/usr/bin/env python

import pexpect

id = pexpect.spawn ('ftp 192.168.3.140')

id.expect_exact('Name')

id.sendline ('anonymous')

id.expect_exact ('Password')
*# Not sure how to send the enter control key
id.sendcontrol ('???')* 

id.expect_exact ('ftp')

id.sendline ('dir')

id.expect_exact ('ftp')

lines = id.before.split ('\n')

for line in lines :
        print line

Answer 1:

Pexpect的没有sendcontrol()方法。 在您的例子中,你似乎是试图发送一个空行。 要做到这一点,使用:

    id.sendline('')

如果您需要发送实时控制字符,你可以send()包含相应的字符值的字符串。 例如,发送控制-C你会:

    id.send('\003')

要么:

    id.send(chr(3))

回应置评#2:

对不起,我typo'ed模块的名字 - 现在是固定的。 更重要的是,我是在代替noah.org的看着老的文档在SourceForge最新文档 。 较新的文档中则示出了sendcontrol()方法。 它需要一个参数要么是一个字母(例如, sendcontrol('c')发送一个控制-C)或多种表示不对应于字母的控制字符标点字符之一。 不过说真的sendcontrol()就要到了一个方便的包装send()方法,这是什么sendcontrol()它的计算,你要发送的实际值后调用后。 您可以在读取源为自己这个文件的973行 。

我不明白为什么id.sendline('')是不行的,特别是考虑到它显然适用于发送用户名到生成的FTP程序。 如果你想使用尝试sendcontrol()而不是那么这将是两种:

    id.sendcontrol('j')

发送一个换行字符(这是控制-j中,或十进制10)或:

    id.sendcontrol('m')

送一个回车(其是控制米,或十进制13)。

如果这些不工作,那么请你解释什么确实发生,以及如何从你想要的或预计将发生什么不同。



文章来源: python pexpect sendcontrol key characters