@serega_p

Как проверить список на пустоту?

Пытаюсь записать в файл значение списка, когда список существует проблем нет.
Но как только job['data']['fields']['quality'] не объявлен\не существует начинаются проблема.
Подскажите как проверить этот список на существование? спасибо

quality = job['data']['fields']['quality']
my_file = open(os.path.join(pathToTmpDir, 'quality.json'), 'w')
my_file.write(quality)
my_file.close()


ошибки с которыми я столкнулся
1) KeyError: 'quality'
2) TypeError: must be str, not list
  • Вопрос задан
  • 473 просмотра
Пригласить эксперта
Ответы на вопрос 4
@immaculate
Программист-путешественник
Вместо исключений намного лучше выглядит .get или key in dictionary:
quality = job['data']['fields'].get('quality', '2222')
my_file = open(os.path.join(pathToTmpDir, 'quality.json'), 'w')
my_file.write(quality)
my_file.close()
Ответ написан
Комментировать
@serega_p Автор вопроса
На ночь глядя сгенерировал такой код.
прошу проверить и сказать что не так. (вроде он работает)

почему то try уехало в левую часть, на самом деле должна стоять как надо.
try:
            quality = job['data']['fields']['quality']
        except KeyError:
            quality='2222'
        except TypeError:
            quality='1111'
        else:
            if quality == '':
                quality='33333'
            else:
                quality = job['data']['fields']['quality']
        my_file = open(os.path.join(pathToTmpDir, 'quality.json'), 'w')
        my_file.write(quality)
        my_file.close()
Ответ написан
Комментировать
lxsmkv
@lxsmkv
Test automation engineer
if quality:
  my_file.write(quality)
else:
  raise ValueError("no value")
Ответ написан
Комментировать
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
try:
    quality = job['data']['fields']['quality']
    error = False
except KeyError:
    error = True
    print('''KeyError: quality''', file=sys.stderr)
except TypeError:
    error = True
    print('''Type mismatch in assigning to quality!''', file=sys.stderr)
if not error:
    my_file = open(os.path.join(pathToTmpDir, 'quality.json'), 'w')
    my_file.write(quality)

my_file.close()

В error можно писать и тип ошибки и его обрабатывать после блока try .. except
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы