【问题标题】:How to save the output of an IPython console to a file in Spyder?如何将 IPython 控制台的输出保存到 Spyder 中的文件中?
【发布时间】:2016-11-23 00:50:31
【问题描述】:

我的程序有一个错误:(

问题是:

  • 我的 .py 代码很长,需要很长时间才能运行
  • 我不知道bug在哪里

好消息是我的py 文件中有很多print(),因此我可能知道错误所在的位置。

坏消息是我的错误导致我的计算机崩溃,所以我无法查看ipython 控制台的输出并查看什么出错了。

如何在程序运行时将输出写入磁盘?这样我在重启后仍然可以打开文件以了解崩溃前发生了什么?

这个问题和Redirect stdout to a file in Python?不同,因为我需要

  • 连续写入文件
  • 在 Spyder 中使用的东西

非常感谢!

【问题讨论】:

  • 写入文件而不是使用打印语句?使用记录器module?使用调试器而不是打印语句?哦,其实刚刚想起另一个post
  • 感谢@AlbertRothman,但我不知道该怎么做。您可以将其发布为答案并解释该怎么做吗?
  • 是的,您的问题与我上面链接的帖子几乎是重复的。看那里。
  • 谢谢,但这不起作用。我想看看pandas 和其他人抛出的错误。以及控制台中的任何其他输出。我的print 语句让我明白我是否在代码中,但我需要控制台中的全文
  • 然后也使用与重定向标准输出相同的方法将标准错误重定向到文件

标签: python anaconda spyder


【解决方案1】:

非常有趣的问题!幸运的是,IPython 为您提供了正确的魔法。它被称为%logstart(请点击链接查看完整文档)。

要开始使用它并保存所有命令的输入和输出,只需输入 IPython 控制台

In[1]: %logstart -o

这会将您从那一刻起的会话记录到一个名为 ipython_log.py 的文件中,该文件位于您当前的目录中。

%logstart 非常灵活,因此您可以选择不同的文件来保存,以及保存会话的方式(纯 Python 或 IPython 命令)。

【讨论】:

  • 谢谢! IPython 有很多像这样的小宝贝 :-)
  • @carloscoroba 顺便说一句,anaconda 的新版本即将推出吗?再次感谢您的出色工作
  • Anaconda 4.3 将于 2017 年 1 月的最后一周或 2 月的第一天发布,其中包括 Spyder 3.1。
  • @CarlosCordoba,似乎%logstart -o 仅在有Out[n] 的情况下才会注销,但如果有stdout,它不会捕捉到这一点。有没有办法捕获ipython 中的stdout,尤其是在没有Out[n] 的情况下?
猜你喜欢
  • 2020-11-19
  • 1970-01-01
  • 2018-05-15
  • 2021-11-09
  • 2018-01-05
  • 2011-10-29
  • 1970-01-01
  • 2017-11-30
相关资源
最近更新 更多