ЦельЗачем Python ломаться на полпути через петлю? TypeError: __getitem__
У меня есть каталог с 65 .txt файлов, которые я разборе, один за другим, и сохранение результатов в 65 соответствующих .txt файлов. Затем я планирую их конкатенировать, но я не уверен, что прямое переключение на это может помочь найти решение здесь.
Проблема
Я получаю:
TypeError: 'NoneType' object has no attribute 'getitem'
и видел два подобных темы:
TypeError: 'NoneType' object has no attribute '__getitem__'
Python: TypeError: 'NoneType' object has no attribute '__getitem__'
Моя проблема кажется несколько странной, поскольку действительно управляет, чтобы просматривать входные файлы, разбирать их и записывать выходной файл примерно десять раз, после чего я получаю сообщение об ошибке. Все файлы похожи, только исходный HTML-код с веб-сайта (т. Е. Тот же веб-сайт, только разные страницы его и так же базовая структура HTML).
Вот функция, в которой происходит ошибка; в последней строке этого фрагмента кода:
def parse(elTree):
desired_value = elTree.xpath('my_very_long_xpath')
desired_value = [x.get('title')[8:] for x in desired_value]
У меня есть еще несколько вариантов этих - я на самом деле разбор около 5 до 6 различных desired_value
с. И все это просто выполняется внутри большего цикла, где файлы считываются в функцию parse
, а затем вывод записывается в новый файл.
То, что я пытался
Я удалил файл, в котором я сначала получил ошибку, но произошла та же ошибка в следующем файле. Я сделал то же самое, удалив два файла, но все же получаю эту ошибку.
Я представил time.sleep(3)
между каждым файлом, чтобы позволить вещам, возможно, работать более плавно. Я понял, что может быть буфер для всего процесса, который, возможно, читается, и его просто стирают, и поэтому там нет файла ... Вот аналогичный occurrence в цикле в C
. К сожалению, сон в течение 3 секунд (плюс тогда разбросанный по различным точкам) мне не помог. код не работает точно в той же точке.
Согласно the documentation, a TypeError
возникает, когда функция применяется к объекту несоответствующего типа, так как может случиться, что он возникает после правильной работы 10 или 11 раз? Вот более официальная information относительно __getitem__
метода
Поскольку код делает хорошо работать иначе, я не включал остальное, но если кто-то подозревает, что может происходить где-то еще, по уважительной причине, то я добавлю еще кода.
Я проверял содержимое файлов .txt для тех, кто работал, и тех, где он был неудачен, и xpaths работают в обоих, содержимое - это, которые необходимо найти и проанализировать.
Я использовал код в 30 копиях того же файла, который успешно выполнился, поэтому в HTML-коде должны быть тонкие отличия, которые мой парсер не распознает.
'x.get («название») 'возвращает' None' –
Да, это, кажется, стандартный ответ, как видно из трех приведенных мной ссылок. Вопросы: ** почему **, когда он уже успел пройти через 10 или около 65 файлов? Кажется, он не зависит от фактического файла, как я также упомянул в своем OP. –
Чтобы расширить то, что говорит @PeterWood, метод 'get' ищет атрибут' title', а входные данные могут его не иметь. Это не проблема python - вам нужно выяснить, все ли ваши данные выглядят так, как вы ожидаете, и соответствующим образом обновить свой код. –