Python: Suppressing errors from going to commandline?

别来无恙 提交于 2019-12-19 07:32:13

问题


When I try to execute a python program from command line, it gives the following error. These errors do not cause any problem to my ouput. I dont want it to be displayed in the commandline

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

How could I suppress the errors?


回答1:


Doesn't catching HTMLParseError work for you? If test.py is the name of your python file, it's propagated up to there, so it should.

Here's an example how to suppress such an error. You might want to tweak it a bit to match your code.

try:
    # Put parsing code here
except HTMLParseError:
    pass

You can also just suppress the error message by redirecting stderr to null, like Ignacio suggested. To do it in code, you can just write the following:

import sys

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

sys.stderr = DevNull()

However, this is probably not be what you want, because from your error it looks like the script execution is stopped, and you probably want it to be continued.




回答2:


Redirect stderr to /dev/null.

python somescript.py 2> /dev/null



回答3:


In python 3, @Boaz Yaniv's answer can be simplified as

sys.stderr = object

since every class in python3 is inherited from Object, so technically this would work, at least I've tried it by myself in python 3.6.5 environment.



来源:https://stackoverflow.com/questions/5925918/python-suppressing-errors-from-going-to-commandline

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!