执行Python代码“UnboundLocalError:赋值前引用的局部变量'sessionid'时出错”

2024-09-27 00:21:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图执行python套件,但遇到以下错误

File "botclient.py", line 59, in <module>
botcode.utils.addUser(loginUri, logoutUri1, logoutUri2, addUserUri, dbUri, dataMap)
File "/root/botclient/clcode/utils.py", line 877, in addUser
logout(logoutUri1, sessionid, dataMap)
UnboundLocalError: local variable 'sessionid' referenced before assignment

当我单独执行函数时,我没有看到这个错误。 下面是我正在使用的addUser函数

def addUser(loginUri, logoutUri1, logoutUri2, addUserUri, dbUri, dataMap):
        try:
            response = login(loginUri, dataMap)
            sessionid = response.split("var jsessionid = '")[1].split("'")[0]
            csrftoken = response.split("wap.csrf_token=\"")[1].split("\"")[0]
            configManager = getDBData("select+instanceid+from+XGS_GROUP+where+instancename%3D%27Config+Managers%27", sessionid, csrftoken, dbUri, dataMap)
            nbiWrite = getDBData("select+instanceid+from+XGS_GROUP+where+instancename%3D%27NBI+Write%27", sessionid, csrftoken, dbUri, dataMap)
            rootDomain = getDBData("select+instanceid+from+XGS_GROUP+where+instancename%3D%27ROOT-DOMAIN%27", sessionid, csrftoken, dbUri, dataMap)
            addUserData = '''------WebKitFormBoundarySkroBjW9bHRdh2YW\r\nContent-Disposition''' 
            addUserPost(addUserUri, addUserData, sessionid, csrftoken, dataMap)

        except Exception as err:
             log(str(traceback.format_exc()))
             dataMap["failureReason"] = "Issue in user addition"
        finally:
             logout(logoutUri1, sessionid, dataMap)

我在sessionid中遗漏了什么


Tags: infromresponseselectsplitaddusersessioniddatamap
2条回答

如果在try块的第一行出现异常,则未分配sessionid。因此,当您试图在finally块中访问它时,它会抛出一个错误,因为此时您基本上不存在sessionid

解决这个问题的一种方法是将sessionid放在try/except块的外部/前面。那样的话,你知道它已经被宣布了

请注意,sessionid仅在“try”语句执行到完成时定义

当出现异常时,sessionid保持未定义状态,在“finally”语句中,它将中断

相关问题 更多 >

    热门问题