我的
python脚本有问题.
它在屏幕上打印了大量数据,我想阻止各种打印进行屏幕显示.
编辑:
我正在使用的库是机械化的,它在屏幕上打印了大量数据.
我把它们设置为假,没有运气!
br.set_debug_redirects(False) br.set_debug_responses(False) br.set_debug_http(False)
有任何想法吗?
帮助将是惊人的,非常感谢!
解决方法
(根据你的第二次编辑)
如果您不想禁用所有输出,可以尝试特定于机械化自身. http://wwwsearch.sourceforge.net/mechanize/提供了一个片段,我已经修改过(虽然我不确定它是否可行):
import logging logger = logging.getLogger("mechanize") # only log really bad events logger.setLevel(logging.ERROR)
当您打印某些内容时,它会通过sys.stdout文件进入屏幕.您可以将此文件更改为任何其他文件(例如,您打开的日志文件),以便不会在屏幕上打印任何内容:
import sys # save the old stdout so you can print later (do sys.stdout = OLD_STDOUT) OLD_STDOUT = sys.stdout sys.stdout = open("logfile.txt",'w')
当然,如果你正在谈论你正在调用的某个库,它可能会打印到sys.stderr.幸运的是,你可以为这个做同样的事情(从上面继续):
OLD_STDERR = sys.stderr sys.stderr = open("errorLog.txt",'w')
现在,如果由于某种原因,您想要完全忽略stdout(或stderr)并且再也看不到它,您可以定义自己的类文件类,只丢弃对象:
class Discarder(object): def write(self,text): pass # do nothing # now discard everything coming out of stdout sys.stdout = Discarder()
并且,为了增加可能的解决方案,这里有一个适用于Unix shell的解决方案:
# discards all input (change /dev/null to a file name to keep track of output) python yourScript.py > /dev/null