gpt4 book ai didi

python pexpect sendcontrol关键字符

转载 作者:太空狗 更新时间:2023-10-29 22:16:34 27 4
gpt4 key购买 nike

我正在使用 python 的 pexpect 模块来自动执行任务,我需要帮助来找出与 sendcontrol 一起使用的关键字符。如何发送控制键 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() 一个包含适当字符值的字符串。例如,要发送一个 control-C,您将:

    id.send('\003')

或:

    id.send(chr(3))

对评论 #2 的回复:

抱歉,我打错了模块名称——现在已修复。更重要的是,我查看的是 noah.org 上的旧文档,而不是 latest documentation at SourceForge。 .较新的文档确实显示了 sendcontrol() 方法。它的参数要么是一个字母(例如,sendcontrol('c') 发送一个 control-C),要么是代表不对应的控制字符的各种标点符号之一字母。但实际上 sendcontrol() 只是 send() 方法的一个方便的包装器,它是 sendcontrol() 在计算之后调用的您要发送的实际值。您可以在 line 973 of this file 上自行阅读源代码。 .

我不明白为什么 id.sendline('') 不起作用,特别是考虑到它显然可以将用户名发送到生成的 ftp 程序.如果您想尝试使用 sendcontrol() 代替,则可以是:

    id.sendcontrol('j')

发送换行符(control-j,或十进制 10)或:

    id.sendcontrol('m')

发送回车(control-m,或十进制 13)。

如果这些不起作用,那么请准确解释发生了什么,以及这与您想要或预期发生的情况有何不同。

关于python pexpect sendcontrol关键字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com