pexpect 返回 Windows 样式换行符
如果有人在Linux上使用过pexpect
,你有没有注意到当使用它的readline()
函数时,pexpect
返回的是窗口风格的换行符?你知道有什么办法可以去掉这个吗?
1 个回答
2
不仅仅是readline()会返回\r\n,使用pexpect捕获的所有文本也都包含\r\n作为换行符。
文档中有以下解释:
readline(self, size=-1)
这个方法会读取并返回一整行内容。字符串末尾的换行符会保留,但如果文件以不完整的行结束,可能就没有这个换行符。注意:这个readline()方法在UNIX系统上也会寻找\r\n这一对换行符,因为伪终端设备返回的就是这个。所以,和你预期的不同,你会收到\r\n作为换行符。当立即遇到文件结束符(EOF)时,会返回一个空字符串。目前,size参数大部分情况下会被忽略,所以这个行为并不是文件对象的标准行为。如果size是0,那么会返回一个空字符串。
你可以这样做,把\r\n转换成\n:
line = child.readline()
line.replace('\r\n', '\n')