在contextlib.redirect_stdout()中,print()函数导致AttributeError:'str'对象没有属性'write'

问题描述 投票:0回答:1

[我根据this post的建议,尝试将python代码特定部分的整个控制台输出重定向到文本文件。

根据那篇文章,它应该与contextlib.redirect_stdout()一起使用,但是当出现第一个print()-命令时在我的自定义函数custom_function_with_internal_print_calls()中,它会抛出AttributeError:'str'对象没有属性“写”

dummy_file = "dummy_textfile.txt"  # file to which the stdout shall be redirected

with contextlib.redirect_stdout(dummy_file):
    # Direct print()-function call
    print("Informative string which shall go to the textfile instead of the console.")

    # Indirect print()-function calls (internally)
    custom_function_with_internal_print_calls(**kwargs)

编辑:在我的特定情况下,我有一个自定义函数,而不是with环境中的print()函数,该函数具有对Python内置的print()函数的内部调用。 print()函数是出现在另一个函数中还是直接出现在顶层以重现错误都没有关系。

选项已尝试:其他变通办法似乎没有提供我想要的解决方案,例如

redefining the print()-function

writing a decorator for python 2.7x(因为我使用的是python 3.7x),或]]

[redirecting the print()-function to a file object通过print('Filename:', filename, file=f)。在我的情况下,后者将意味着将文件处理程序传递给我选择的封闭函数中的所有子函数,对于这种特殊情况,这是过多的代码修改。

我希望能够仅使用包裹在我的函数中的环境with contextlib.redirect_stdout(dummy_file):,以便将该功能的每个控制台输出重定向到dummy_file

documentation of contextlib.redirect_stdout()也无济于事。预先感谢您的建议。

我按照本文的建议将python代码特定部分的整个控制台输出重定向到文本文件。根据那篇文章,它应该与contextlib一起使用。...

python python-3.x printing writetofile console-output
1个回答
0
投票

我通过将file-handler

© www.soinside.com 2019 - 2024. All rights reserved.