Перебор переменных, уже имеющих индекс, и запись в JSON

1

Я использую Selenium WebDriver, но мой фактический вопрос больше связан с итерацией в Python. У меня открыто 5 окон, и я пишу некоторые данные с некоторых сайтов, которые я очистил до нескольких файлов JSON, которые были созданы. Мой код выглядит следующим образом:

for i in range(len(driver.window_handles)):
    try:
        if value != "name" and variable.is_displayed():
            with open("game%s.json" % (i + 1), "w") as outfile:
                json.dump({"some variable": "data", "2nd variable":"2nd data", "nth variable": "nthdata[2][i]"}, outfile)
    except NoSuchElementException:
        print("text")

Это отлично работает, когда нет других индексов, и я много раз итерации, но когда речь заходит о чем-то вроде n-й переменной, где мне нужен элемент из переменной, которую я использую в [2], например и хочу, чтобы это повторялось для каждого окна, которое у меня есть и записано в соответствующий файл JSON, я получаю сообщение об ошибке

IndexError: string index out of range

Надеюсь, я ясно дал понять, чего я пытаюсь достичь, я искал вокруг, но не могу найти то, что ищу. Как я могу изменить это так, чтобы итерация работала, правильное количество раз для точного индекса, который я пытаюсь использовать?

Теги:
python-3.x
iteration

1 ответ

0

Если в вашем массиве 5 объектов len return 5, но последний индекс массива - 4. добавьте -1 после того, как метод len будет иметь диапазон 0 и 4 = 5 объектов

for i in range(len(driver.window_handles)-1):
    try:
        if value != "name" and variable.is_displayed():
            with open("game%s.json" % (i + 1), "w") as outfile:
                json.dump({"some variable": "data", "2nd variable":"2nd data", "nth variable": "nthdata[2][i]"}, outfile)
    except NoSuchElementException:
        print("text")
  • 0
    Я ценю ваш ответ, но он не решает проблему, с которой я столкнулся. Если я воспользуюсь вашим предложением, оно не устранит ошибку диапазона, в частности, при записи в файл JSON.
  • 0
    Извините, я редактирую код в ответе, вы забыли цитату в словаре.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню