python – 禁止在库外调用模块的输出
作者:互联网
使用机器学习库PyML时,我遇到了一个恼人的问题.PyML使用libsvm来训练SVM分类器.问题是libsvm将一些文本输出到标准输出.但因为那是在Python之外我不能拦截它.我尝试使用问题Silence the stdout of a function in Python without trashing sys.stdout and restoring each function call中描述的方法,但没有一个帮助.
有什么方法可以做到这一点.修改PyML不是一种选择.
解决方法:
打开/ dev / null进行写入,使用os.dup()复制stdout,并使用os.dup2()将open / dev / null复制到stdout.使用os.dup2()将复制的标准输出复制回到真正的标准输出后.
devnull = open('/dev/null', 'w')
oldstdout_fno = os.dup(sys.stdout.fileno())
os.dup2(devnull.fileno(), 1)
makesomenoise()
os.dup2(oldstdout_fno, 1)
标签:libsvm,python,pyml 来源: https://codeday.me/bug/20190925/1816548.html