(на основании вашего второго редактирования)
Если вы не хотите отключать все выходные данные, вы можете попытаться указать только 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:
# discards all input (change /dev/null to a file name to keep track of output)
python yourScript.py > /dev/null