首页 > 解决方案 > python3.6 PEXPECT 没有将日志写入日志文件

问题描述

我正在尝试将 pexpect 日志记录到文件中。该代码在 python2.7 中运行,但在 python3.6 中未打印日志

import pexpect
child = pexpect.spawn("telnet IP")
fout = open("abc.txt", "wb"):
child.logfile = fout
child.sendlines("somecommand)

标签: pythonpexpect

解决方案


很难相信这段代码确实在 Python 2.7 中运行;)

您的上下文管理器在完成后立即退出child.logfile = fout,因此当您的子进程随后尝试写入文件句柄时,您的文件句柄将关闭。您必须保持文件句柄打开,直到您的孩子完成,例如:

import pexpect
with open("abc.txt", "wb") as fout:
    child = pexpect.spawn("telnet IP")
    child.logfile = fout

# -- OR --

child = pexpect.spawn("telnet IP")
with open("abc.txt", "wb") as fout:
    child.logfile = fout
    child.expect(<some pattern here>)

推荐阅读