在python中获取keyerror

在python中获取keyerror,python,selenium,selenium-webdriver,keyerror,Python,Selenium,Selenium Webdriver,Keyerror,我在解析json文件时收到密钥错误 json文件 config.json: { "user": { "name": "hsani", "password": "AQ@SWkeet999" }, "env": { "Staging": "https://serviceconsole-stg.tivo.com/serviceconsole/login.action", "QE": "http://serviceconsolese01.tivo.com:9090/ser

我在解析json文件时收到密钥错误

json文件 config.json:

{
 "user": {
   "name": "hsani",
   "password": "AQ@SWkeet999"
 },

 "env": {
   "Staging": "https://serviceconsole-stg.tivo.com/serviceconsole/login.action",
   "QE": "http://serviceconsolese01.tivo.com:9090/serviceconsole"
 }
}
我称之为:

with open('config.json', 'r') as login_details:
           login_conf = json.load(login_details)
           #print config["Staging"]
       if env == 'Staging':
           self.driver.get(login_conf['env']['Staging'])
       elif env == 'QE':
           self.driver.get(login_conf['env']['QE'])
得到的误差为

Traceback (most recent call last):
 File "testdemo.py", line 9, in <module>
   driver = MSOSOLUTION.login.BrowserLogin('Staging')
 File "../lib/python/MSOSOLUTION/login.py", line 20, in __init__
   self.driver.get(login_conf['env']['Staging'])
KeyError: 'env
回溯(最近一次呼叫最后一次):
文件“testdemo.py”,第9行,在
driver=MSOSOLUTION.login.BrowserLogin('Staging')
文件“./lib/python/MSOSOLUTION/login.py”,第20行,在__
get(login_conf['env']['Staging'])
KeyError:'env

有人能解释一下如何解决关键错误吗?

你在
“user:{}

也会改变

with open('data.json') as data_file:
    data = json.loads(data_file.read())
使用
json.load
而不是
json.load
。在Python3中,
json.loads
接受一个字符串参数
json.load
采用类似文件的对象参数
data\u file.read()
返回字符串对象

{
 "user": {
   "name": "hsani",
   "password": "AQ@SWkeet999"
 },

 "env": {
   "Staging": "https://serviceconsole-stg.tivo.com/serviceconsole/login.action",
   "QE": "http://serviceconsolese01.tivo.com:9090/serviceconsole"
 }
}
需要注意的几点:

  • json在
    用户
    环境
    之间缺少
  • 您可以使用
    login\u conf.get('env').get('qe',None)
  • 在config.json中,它是
    QE
    而不是
    QE

  • 忽略QE,它不会出现在那里,因为env正在这里登台…如果错误仍然存在于更正后的json文件中,那么我们在这里会丢失一些东西。请向我们展示类的其余部分。回溯(最后一次调用):文件“testdemo.py”,第9行,在driver=MSOSOLUTION.login.BrowserLogin('Staging')文件中。./lib/python/MSOSOLUTION/login.py,第17行,在init login\u conf=json.load(login\u details(x))中NameError:未定义全局名称“x”获取上述错误唯一的错误是在config.json文件中您忘记了一个逗号,其他所有内容都正确只需复制我的json并将其粘贴到config.json文件中,并以open('config.json')作为登录详细信息:login\u conf=json.loads(login\u details.read())#print config[“Staging”]如果env=='Staging':self.driver.get(login_conf['env']['Staging'])仍然得到相同的错误KeyError:'env您可以打印
    login_conf.keys()
    ,您的错误意思是没有名为
    'env'
    的键,我已经尝试了1,即使它不起作用…您可以忽略第三种情况,因为它甚至不会去QE@Vidhya你能详细说明一下吗?这样我就可以在解析json文件时提供帮助了,我遇到了上面提到的错误,关键错误。关于2:第二个
    get()
    中的
    None
    是不需要的,这是默认值,如果无法查找名称,将隐式返回。此外,如果第一个
    get()
    在外部dict中找不到'env',则第二个
    get()
    将引发AttributeError,然后返回所提到的默认值
    None
    。超过
    self.driver