我想pycosat的这个详细的输出存储到字符串:捕获输出打印在python
import pycosat
cnf = [[1, -5, 4], [-1, 5, 3, 4], [-3, -4]]
pycosat.solve(cnf,verbose=5)
我发现各种解决方案,例如 Capture stdout from a script in Python
但是,基于stringIO()的解决方案不捕获pycosat输出。输出得到正常打印,并捕获一个空字符串。
我认为这与pycosat是绑定到c库picosat的事实有关,但我不知道如何处理这个问题。
该解决方案无法正常工作或 https://stackoverflow.com/a/29834357/4270148
Python会在
out.stop()
冻结IPython中也将冻结在
sys.stdout = StringIO()
可能有事情做吧。
我没有尝试使用使用子进程的解决方案,因为我需要局部变量cnf,并且将它传递到子进程并没有意义。
我不知道这是否应该是相关的,但我使用OSX-64
你确实在Mac OS X内建的Python上尝试过它,对不对? – Dalen
我没有,因为我没有安装pycosat(我使用conda,因为包问题) – Tivaro