从标准输入读取时如何处理索引

How can I handle index when reading from stdin

我正在使用 bash 脚本并希望在 bash 函数中嵌入一个 Python 片段。

所以我得到了这个有效的 Python 片段,它只是从标准输入读取并解析它以获得条目的标题[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

得到这个索引错误:

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

似乎 root['entries'] 在这种情况下返回一个空列表..我不知道为什么。

感谢帮助

像这样执行得很好:

$ 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
)