Python: Подавление ошибок при переходе в командную строку?

1

Когда я пытаюсь выполнить программу 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

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

Теги:
exception-handling
error-handling
html-parsing

3 ответа

2
Лучший ответ

Не удается ли вам использовать HTMLParseError? Если test.py - это имя вашего файла python, оно распространяется туда, поэтому оно должно быть.

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

try:
    # Put parsing code here
except HTMLParseError:
    pass

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

import sys

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

sys.stderr = DevNull()

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

  • 0
    Когда я не дал ничего, Except аргумента, это сработало. Но когда я дал, except HTMLParseError: получаю ошибку NameError: name 'HTMLParseError' is not defined. So how could I know the exact error thing?
  • 0
    Затем вы должны либо перехватить HTMLParser.HTMLParseError , либо явно импортировать его с помощью from HTMLParser import HTMLParseError .
Показать ещё 4 комментария
5

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

python somescript.py 2> /dev/null
  • 0
    Есть ли способ программирования с этим справиться. HTMLParser выдает ошибку из-за неправильно сформированных тегов. Но это не вызывает у меня никаких проблем. Есть ли метод, использующий try/catch
  • 0
    Зависит. Вы пишете программу?
Показать ещё 3 комментария
0

В python 3, @Boaz Yaniv ответ может быть упрощен как

sys.stderr = object

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню