Python: Suppressing errors from going to commandline?
Solution 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.
Solution 2
Redirect stderr to /dev/null
.
python somescript.py 2> /dev/null
Solution 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.
Solution 4
Here is a more readable, succinct solution for handling errors that are safe to ignore, without having to resort to the typical try/except/pass code block.
from contextlib import suppress
with suppress(IgnorableErrorA, IgnorableErrorB):
do_something()
user567879
Updated on July 13, 2022Comments
-
user567879 almost 2 years
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?
-
user567879 about 13 yearsIs there a programming way of handling it. HTMLParser gives error due to malformed tags. But it doesnt cause any problem for me. Is there any method using
try/catch
-
Ignacio Vazquez-Abrams about 13 yearsDepends. Are you writing the program?
-
Chris Eberle about 13 yearsJust a guess, you could put the offending code inside of a
try/except
block. -
user567879 about 13 yearsYes I am writing the program. I want to mute the errors since it wont affect the output at all
-
Ignacio Vazquez-Abrams about 13 yearsThen yes, you would catch the exceptions as explained in the Python tutorial.
-
user567879 about 13 yearsWhen I gave nothing as
Except
argument, It worked. But when I gaveexcept HTMLParseError:
am getting errorNameError: name 'HTMLParseError' is not defined. So how could I know the exact error thing?
-
Boaz Yaniv about 13 yearsThen you should either catch
HTMLParser.HTMLParseError
, or import it explicitly withfrom HTMLParser import HTMLParseError
. -
user567879 about 13 yearsOh thanks. I couldnt understand it from the error message. But when I gave
from HTMLParser import HTMLParseError
it worked. But when I gaveHTMLParser.HTMLParseError
, it gave the errorAttributeError: class HTMLParser has no attribute 'HTMLParseError'
. Why is it so? -
Boaz Yaniv about 13 yearsYou've probably had a
from HTMLParser import HTMLParser
in your code (so the class HTMLParser masked the module HTMLParser). You didn't post the code here, so I was really pushing in the dark. Anyway, I suggest you to read the Python tutorial about modules and exceptions -
user567879 about 13 yearsYes I had. So whats the problem with that?
-
PeJota almost 2 yearsyou need to
import sys
to run this