+ -
当前位置:首页 → 问答吧 → 在Cygwin环境下,如何发送回车【python】

在Cygwin环境下,如何发送回车【python】

时间:2011-10-09

来源:互联网

请问:用pexpect在cygwin下如何发送回车到远程设备?

作者: harold00   发布时间: 2011-10-09

回车也就是一个字符(串),直接发送就行了。

另外,pexpect还有sendline方法,可以自动帮你加上合适的回车符。

作者: panghuhu250   发布时间: 2011-10-09

引用 1 楼 panghuhu250 的回复:

回车也就是一个字符(串),直接发送就行了。

另外,pexpect还有sendline方法,可以自动帮你加上合适的回车符。

试过了,这样不行。
而且,那设备必须要发送一个回车符过去才可以,
之前在虚拟机的linux环境下可以用发送\r来实现的,
但是在cygwin下面发送\r不行

作者: harold00   发布时间: 2011-10-10

Python code
cmd='/on a1\r'
child.sendline(cmd)

为什么在linux(虚拟机)里就可以,但是到cygwin里就设备就不能正常执行了呢?

作者: harold00   发布时间: 2011-10-10

引用 3 楼 harold00 的回复:

Python code
cmd='/on a1\r'
child.sendline(cmd)

为什么在linux(虚拟机)里就可以,但是到cygwin里就设备就不能正常执行了呢?

sendline(self, s='')
  This is like send(), but it adds a line feed (os.linesep). This
  returns the number of bytes written.

Linux下os.linesep是\n,所以实际发送的文字是"/on a1\r\n"。检查一下cygwin下,os.linesep是什么?如果是\r\n,则最后发送的文字就成了"/on a1\r\r\n",就不对了。

直接用send应该可以:
Python code
cmd='/on a1\r\n'
child.send(cmd)

作者: panghuhu250   发布时间: 2011-10-10