<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def do_get(self, params):
 """ \x1b[1mNAME\x1b[0m get - Gets the znode's value \x1b[1mSYNOPSIS\x1b[0m get <path> [watch] \x1b[1mOPTIONS\x1b[0m * watch: set a (data) watch on the path (default: false) \x1b[1mEXAMPLES\x1b[0m > get /foo bar # sets a watch > get /foo true bar # trigger the watch > set /foo 'notbar' WatchedEvent(type='CHANGED', state='CONNECTED', path=u'/foo') """

        watcher = lambda evt: self.show_output(str(evt))
        kwargs = {"watch": watcher} if params.watch else {}
        value, _ = self._zk.get(params.path, **kwargs)

        # maybe it's compressed?
        if value is not None:
            try:
                value = zlib.decompress(value)
            except:
                pass

        self.show_output(value)