Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何记录所有打印语句_Python_Stdout - Fatal编程技术网

Python 如何记录所有打印语句

Python 如何记录所有打印语句,python,stdout,Python,Stdout,我的程序相当大,我希望它的所有打印语句都被记录下来,因此我实现了 F = open('testy.txt','w') sys.stdout = F if app.button_press() == True and app.return_data(): data = app.return_data() main(data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8]) F.close()

我的程序相当大,我希望它的所有打印语句都被记录下来,因此我实现了

F = open('testy.txt','w')
sys.stdout = F

if app.button_press() == True and app.return_data():
    data = app.return_data()
    main(data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8])

F.close()

这是我以前对带有几个打印语句的小程序所做的,但我猜这个程序有几百个打印语句,当我运行我的程序时,它会冻结,我认为它有很多打印语句,并且内存溢出。因此,如何将我所有的打印语句记录到一个.txt文件中,而不影响它的功能?

不应该使用打印语句进行日志记录,也不应该在生产代码中重定向标准输出(或任何其他标准流)。相反,您应该使用该模块来编写消息,并设置您需要将日志消息记录到正确位置的任何处理程序(可能是或在您的情况下)


如果您已经有太多的现有代码打印日志消息需要一次重构,我建议实现
日志记录
,将其用于以后的所有日志记录,设置一个类似文件的对象,将标准输出分流到
日志记录
,以捕获现有日志消息,然后随着时间的推移重构所有基于打印的日志。

您是否尝试过使用sys.stdout.flush()刷新日志?您真的不应该这样做。设置日志记录并将其配置为如果您想查看它,则登录到标准输出,如果您想登录到文件,则将其配置为文件。您能提供一个示例吗,因为我从未使用过日志记录模块