相关疑难解决方法(0)

如何从Python函数调用中捕获stdout输出?

我正在使用一个对象做某事的Python库

do_something(my_object)
Run Code Online (Sandbox Code Playgroud)

并改变它.这样做时,它会向stdout打印一些统计信息,我想抓住这些信息.适当的解决方案是改变do_something()以返回相关信息,

out = do_something(my_object)
Run Code Online (Sandbox Code Playgroud)

但在开始讨论do_something()这个问题之前还需要一段时间.作为一种解决方法,我考虑解析do_something()对stdout的任何写入.

如何在代码中的两点之间捕获stdout输出,例如,

start_capturing()
do_something(my_object)
out = end_capturing()
Run Code Online (Sandbox Code Playgroud)

python stdout capture

93
推荐指数
2
解决办法
5万
查看次数

如何在python中重定向函数的打印输出

可能重复:
我可以将python中的stdout重定向到某种字符串缓冲区吗?

我在python中有一个函数,可以在标准输出中输出内容

def foo():
    print("some text")
Run Code Online (Sandbox Code Playgroud)

我想将此函数中正在打印的文本"重定向"为变量,即"包装"此函数或其他任何内容,以便将文本存储在变量中:

text = wrapper(foo)
Run Code Online (Sandbox Code Playgroud)

有没有一种强大的方法来临时更改sys.stdout或打开变量作为一个FileObject或其他什么?

python printing stdout function

5
推荐指数
2
解决办法
2万
查看次数

来自Jupyter笔记本的stdout重定向已登陆终端

因此,我尝试将stdoutJupyter Notebook中的某些单元格重定向到与此相关的文件,然后针对其余单元格使用文件将其取消。第一组单元格的输出按原样放置在文件中。在cancel命令之后的第二组单元格sys.stdout = sys.__stdout__没有给出任何输出,似乎什么也没做,但后来我意识到它降落在启动笔记本电脑的终端中。

它与完全相同的Python在Python解释器中完美工作:

(miniconda3-latest) cardamom@pegasus:~/Documents/project1 $ python
Python 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016, 12:22:00) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout = open('stdout.txt', 'w')
>>> print("a")
>>> print("a")
>>> print("a")
>>> sys.stdout = sys.__stdout__
>>> print ("b")
b
>>> print ("b")
b
>>> print ("b")
b
>>> # lots of a's are …
Run Code Online (Sandbox Code Playgroud)

python jupyter-notebook python-3.6

4
推荐指数
1
解决办法
5223
查看次数