В настоящее время я работаю со скриптом Python, который принимает консольные входные данные и производит консольные выходные данные, используемые другой частью приложения. Проблема в том, что одна из библиотек, которые я использую, выдает много предупреждающих сообщений. Я устал перезаписать стандартный вывод и стандартный вывод, но даже в этом случае эти сообщения все еще печатаются. Есть ли другой способ, которым Python может печатать на консоли? Что еще я могу сделать, чтобы подавить эти сообщения?
Вот часть кода, которая вызывает проблемы
import sys
import os
import logging
from rdkit import Chem
from rdkit.Chem import AllChem
if __name__ == "__main__":
sink = open(os.devnull, "w")
sys.stdout = sink
sys.stderr = sink
logging.disable(100)
logger = logging.getLogger()
reaction = AllChem.ReactionFromSmarts("C>>C")
result = reactants = reaction.RunReactants((Chem.MolFromSmiles("CC"),))
print "NOT SHOWN"raise Exception("NOT SHOWN EITHER")
logger.critical("STILL NOTHING")
и он производит следующий вывод:
[13:36:26] reactant 0 has no mapped atoms.
[13:36:26] product 0 has no mapped atoms.
Я заблокировал stdout
, stderr
и даже журналы с приоритетом не более 100. Все безрезультатно. Я подозреваю, что эта проблема может быть связана с тем фактом, что эта библиотека использует код C ++ в ядре, но это не объясняет, как избавиться от этих сообщений.
Задача ещё не решена.
Других решений пока нет …