Python: Подавление ошибок при переходе в командную строку? - PullRequest
3 голосов
/ 08 мая 2011

Когда я пытаюсь выполнить программу на Python из командной строки, выдается следующая ошибка. Эти ошибки не вызывают никаких проблем с моим выходом. Я не хочу, чтобы он отображался в командной строке

Traceback (most recent call last):
  File "test.py", line 88, in <module>
    p.feed(ht)
  File "/usr/lib/python2.5/HTMLParser.py", line 108, in feed
    self.goahead(0)
  File "/usr/lib/python2.5/HTMLParser.py", line 148, in goahead
    k = self.parse_starttag(i)
  File "/usr/lib/python2.5/HTMLParser.py", line 226, in parse_starttag
    endpos = self.check_for_whole_start_tag(i)
  File "/usr/lib/python2.5/HTMLParser.py", line 301, in check_for_whole_start_tag
    self.error("malformed start tag")
  File "/usr/lib/python2.5/HTMLParser.py", line 115, in error
    raise HTMLParseError(message, self.getpos())
HTMLParser.HTMLParseError: malformed start tag, at line 319, column 25

Как я мог подавить ошибки?

Ответы [ 3 ]

6 голосов
/ 08 мая 2011

Перенаправить stderr на /dev/null.

python somescript.py 2> /dev/null
5 голосов
/ 08 мая 2011

У вас не работает перехват HTMLParseError? Если test.py - это имя вашего файла Python, он распространяется туда, поэтому он должен.

Вот пример, как подавить такую ​​ошибку. Возможно, вы захотите немного изменить его, чтобы он соответствовал вашему коду.

try:
    # Put parsing code here
except HTMLParseError:
    pass

Вы также можете просто подавить сообщение об ошибке, перенаправив stderr на ноль, как предложил Игнасио. Чтобы сделать это в коде, вы можете просто написать следующее:

import sys

class DevNull:
    def write(self, msg):
        pass

sys.stderr = DevNull()

Однако, вероятно, это не то, что вам нужно, потому что из вашей ошибки похоже, что выполнение скрипта остановлено, и вы, вероятно, хотите, чтобы оно продолжалось.

3 голосов
/ 31 мая 2018

В python 3 ответ @Boaz Yaniv можно упростить до

sys.stderr = object

, поскольку каждый класс в python3 наследуется от Object, так что технически это будет работать, по крайней мере я пыталсяЯ в среде Python 3.6.5.

...