如何打印到控制台而不是 iPython 输出单元?

Nic*_*ick 7 python ipython ipython-notebook

我想将我的输出打印到控制台(显示日志信息的控制台,或者更好的是,一个单独的控制台)而不是 iPython 网络笔记本中的输出单元。

这是因为我经常有很长的输出,我喜欢滚动浏览,而 Chrome 在大输出时会滞后和中断,而 iTerm2 则不会。

小智 5

更新 valhallasw 的答案:您应该使用以下内容,否则返回TypeError: a bytes-like object is required, not 'str'.

import os
os.write(1, b"text\n")
Run Code Online (Sandbox Code Playgroud)

否则,你也可以像 Oliver Evans 说的那样:

import os
os.write(1, "text\n".encode())
Run Code Online (Sandbox Code Playgroud)


小智 3

您可以通过直接写入文件描述符 1(而不是映射到 iPython 笔记本的 sys.stdout)来写入控制台:

import os
os.write(1, "text\n")
Run Code Online (Sandbox Code Playgroud)

  • 您还可以 `sys.__stdout__.write("foo\n")` (`sys.stdout` 映射到笔记本,`sys.__stdout__` 是“真正的”stdout 文件句柄)。 (7认同)
  • 我正在使用Python 3.6.5;`os.write` 需要一个类似字节的对象。`os.write(1, "text\n".encode())` 就足够了。 (3认同)