我与蟒蛇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
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)。
如果这些不工作,那么请你解释什么确实发生,以及如何从你想要的或预计将发生什么不同。