Как я могу обработать индекс при чтении из стандартного ввода [дубликата]

1

Я работаю с скриптами bash и хотел бы встроить фрагмент Python внутри функции bash.

Итак, я получил этот рабочий фрагмент Python, который просто читает из stdin и анализирует его, чтобы получить заголовок записи [0]:

import feedparser, sys
root = feedparser.parse(sys.stdin.read())
print root['entries'][0].title

И все кажется прекрасным:

$ curl -sf https://feedforall.com/sample.xml | python xmlparser.py
RSS Solutions for Restaurants

IndexError возникает, когда я выполняю этот путь:

$ curl -sf https://feedforall.com/sample.xml | python - <<EOF
import feedparser, sys
root = feedparser.parse(sys.stdin.read())
print root['entries'][0].title
EOF

Получил этот IndexError:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
IndexError: list index out of range

Кажется, что root ['entries'] в этом случае возвращает пустой список.. и я не знаю почему.

Спасибо за помощь

  • 2
    Вот почему
Теги:
rss
feedparser

1 ответ

0
Лучший ответ

Работал так хорошо:

$ curl -sf https://feedforall.com/sample.xml | python <( cat <<EOF
import feedparser, sys
root = feedparser.parse(sys.stdin.read())
print root['entries'][0].title
EOF
)

Ещё вопросы

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