Я получаю ключевую ошибку при разборе файла 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
Может кто-нибудь объяснить, как решить ключевую ошибку?
Если ошибка сохраняется с исправленным файлом json, здесь что-то не хватает. Пожалуйста, покажите нам остальных учеников вашего класса.






вы получили одну запятую после "user":{}
а также изменить
with open('data.json') as data_file:
data = json.loads(data_file.read())
используйте json.loads вместо json.load. В Python 3 json.loads принимает строковый параметр. json.load принимает параметр объекта, подобного файлу. data_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"
}
}
Отслеживание (последний вызов последним): файл "testdemo.py", строка 9, в файле <module> driver = MSOSOLUTION.login.BrowserLogin ('Staging') "../lib/python/MSOSOLUTION/login.py", строка 17, в в этом login_conf = json.load (login_details (x)) NameError: глобальное имя 'x' не определено, получена вышеуказанная ошибка
единственная ошибка в файле config.json вы забыли одну запятую, все остальное верно
просто скопируйте мой json и вставьте его в свой файл config.json
с open ('config.json') как login_details: login_conf = json.loads (login_details.read ()) #print config ["Staging"] if env == 'Staging': self.driver.get (login_conf ['env '] [' Staging ']) по-прежнему появляется та же ошибка KeyError:' env
Можете ли вы распечатать login_conf.keys(), ваша ошибка означает, что нет ключа с именем 'env'
[u'user '] Traceback (последний вызов последним): файл "testdemo.py", строка 9, в файле <module> driver = MSOSOLUTION.login.BrowserLogin (' Staging ') "../lib/python/MSOSOLUTION /login.py ", строка 20, в в этом self.driver.get (login_conf ['env'] ['Staging']) KeyError: 'env'
распечатал только пользователь .. :(
Я не думаю, что есть другая проблема, кроме файла json. вы не делаете еще один файл json и используете его.
несколько замечаний: Видхья
, между user и envlogin_conf.get('env').get('qe', None)QE, а не qeЯ пробовал 1, даже если он не работал ... вы можете игнорировать 3-й случай, потому что он даже не перейдет в QE
@Vidhya, можешь рассказать еще немного, чтобы я мог помочь с
при разборе файла json я получаю вышеупомянутую ошибку, ключевую ошибку.
Относительно 2: None во втором get() не нужен, это значение по умолчанию и будет возвращено неявно, если имя не может быть найдено. Кроме того, второй get() вызовет AttributeError, если первый get() не может найти env во внешнем dict, который затем вернет упомянутый None по умолчанию.
мимо содержимого self.driver
@Vidhya сделайте print self.driver перед строкой if env == 'Staging': и скопируйте результат сюда
игнорируйте QE, он не идет туда, так как env находится здесь ...