我的 python 脚本有问题。
它在屏幕上打印大量数据,我想阻止各种打印到屏幕。
编辑:
我使用的库是mechanize,它在屏幕上打印大量数据。
我已经将这些设置为 false 但运气不好!
br.set_debug_redirects(False)
br.set_debug_responses(False)
br.set_debug_http(False)
有什么想法吗?
帮助将是惊人的,非常感谢!
最佳答案
(基于您的第二次编辑)
如果您不想禁用所有输出,您可以尝试特定于mechanize
本身。 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
关于python - 沉默记录器和打印到屏幕 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2605117/