<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_set_acls(self, params):
 """ \x1b[1mNAME\x1b[0m set_acls - Sets ACLs for a given path \x1b[1mSYNOPSIS\x1b[0m set_acls <path> <acls> [recursive] \x1b[1mOPTIONS\x1b[0m * recursive: recursively set the acls on the children \x1b[1mEXAMPLES\x1b[0m > set_acls /some/path 'world:anyone:r digest:user:aRxISyaKnTP2+OZ9OmQLkq04bvo=:cdrwa' > set_acls /some/path 'world:anyone:r username_password:user:p@ass0rd:cdrwa' > set_acls /path 'world:anyone:r' true """

        try:
            acls = ACLReader.extract(shlex.split(params.acls))
        except ACLReader.BadACL as ex:
            self.show_output("Failed to set ACLs: %s.", ex)
            return

        def set_acls(path):
            try:
                self._zk.set_acls(path, acls)
            except (NoNodeError, BadVersionError, InvalidACLError, ZookeeperError) as ex:
                self.show_output("Failed to set ACLs: %s. Error: %s", str(acls), str(ex))

        if params.recursive:
            for cpath, _ in self._zk.tree(params.path, 0, full_path=True):
                set_acls(cpath)

        set_acls(params.path)