我有一个大的python脚本,其中多个打印语句和警告(例如弃用警告)正在打印到IPython控制台.出于调试目的,我想将所有打印语句和警告/错误写入输出文件.有没有办法在Spyder做到这一点?
我在控制台中尝试过(但它不会在我的任何目录中创建输出文件):
runfile('pyfile.py',wdir='wdir') > output.txt
Run Code Online (Sandbox Code Playgroud)
我知道如何在提示符中执行此操作:
python "directory\pyfile.py"> output.txt 2>&1
Run Code Online (Sandbox Code Playgroud)
但是能够在Spyder中做到这一点会更方便.我在Stack Overflow上进行了广泛的搜索,但是之前问题的答案都没有给出我想要的结果.
(这里是 Spyder 维护者)您需要知道 Spyder 使用IPython控制台来运行您的代码,因此最好搜索在 IPython 中而不是在 Spyder 中可以执行的操作。
在这种情况下,搜索在第一个结果中ipython save stdout给了我正确的答案,那就是 StackOverflow 的结果。
本质上,您需要使用%%capture魔术或上下文管理器(如上面答案中提到的那样)并将runfile其放入其中之一以捕获程序中的所有标准输出输出。