(基于您的第二次编辑)
如果您不想禁用所有输出,可以尝试特定于mechanize 本身。 http://wwwsearch.sourceforge.net/mechanize/ 提供了一个 sn-p,我已经对其进行了修改(虽然我不确定它是否会起作用):
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