我有一个python脚本,它由几个运行的线程组成,它们有打印输出来告诉任何连接失败,例如无法打开端口,无法连接等。
我尝试过基本的:
methods: {
ProcessLogin() {
var status = ApiLogin(this.data);
console.log(status);
}
}
但没有任何内容保存到文件中。我试图获取系统打印输出并将其保存到tinydb。我试图将所有输出记录到tinydb中。我怎么能这样做?
是否可以连续检索所有打印输出并使用tinydb将其保存到json文件中?
答案 0 :(得分:0)
在python3中,如果要覆盖stdout,则必须使用print
文件参数,如文档中所述并且如此问题中所述:
这为您提供了实现您所需要的基本构建模块。你真的没有解释任何关于你如何与tinydb一起使用它的事情......
那就是说,你的打印电话应该是这样的:
fake_stdout = open('file', 'w')
print(data, file=fake_stdout)
就是这样。
如果由于某些原因你需要更改大量的print语句,你可以这样做:
让模块具有初始化的线程局部变量。在这里看看这个问题:Thread local storage in Python
然后,当您设置模块时,可以在需要不同打印标准输出的所有文件中添加此语句
from special_print import local_print as print
您所要做的就是在special_print模块中定义一个threadlocal变量,然后在新线程以类似这样的内容开头时定义它:
def print_factory(fout):
def local_print(arg):
print(arg, file=fout)
return local_print
在每个新线程中,你运行如下:
import special_print
special_print.local_print = print_factory(fake_stdout)
然后,当您在每个线程中导入此print
方法时,它们将正确地将数据输出到您在每个线程中定义的fake_stdout。