Skip to main content
 首页 » 编程设计

Python之理解错误 : IndexError: list index out of range

2025年05月04日15cmt

我是 python 的新手。我有一个错误需要了解。

代码:

配置文件:

# Vou definir os feeds 
feeds_updates = [{"feedurl": "http://aaa1.com/rss/punch.rss", "linktoourpage": "http://www.ha.com/fun.htm"}, 
                 {"feedurl": "http://aaa2.com/rss.xml", "linktoourpage": "http://www.ha.com/fun.htm"}, 
                 {"feedurl": "http://aaa3.com/Heaven", "linktoourpage": "http://www.ha.com/fun.htm"}, 
                 {"feedurl": "http://aaa4.com/feed.php", "linktoourpage": "http://www.ha.com/fun.htm"}, 
                 {"feedurl": "http://aaa5.com/index.php?format=feed&type=rss", "linktoourpage": "http://www.ha.com/fun.htm"}, 
                 {"feedurl": "http://aaa6.com/rss.xml", "linktoourpage": "http://www.ha.com/fun.htm"}, 
                 {"feedurl": "http://aaa7.com/?format=xml", "linktoourpage": "http://www.ha.com/fun.htm"}, 
                 {"feedurl": "http://aaa8/site/component/rsssyndicator/?feed_id=1", "linktoourpage": "http://www.ha.com/fun.htm"}] 

推特C.py

# -*- coding: utf-8 -*- 
import config   # Ficheiro de configuracao 
import twitter 
import random 
import sqlite3 
import time 
import bitly_api #https://github.com/bitly/bitly-api-python 
import feedparser 
 
... 
 
# Vou escolher um feed ao acaso 
feed_a_enviar = random.choice(config.feeds_updates) 
# Vou apanhar o conteudo do feed 
d = feedparser.parse(feed_a_enviar["feedurl"]) 
# Vou definir quantos feeds quero ter no i 
i = range(8) 
print i 
# Vou meter para "updates" 10 entradas do feed 
updates = [] 
for i in range(8): 
    updates.append([{"url": feed_a_enviar["linktoourpage"], "msg": d.entries[i].title + ", "}]) 
# Vou escolher ums entrada ao acaso 
print updates # p debug so 
update_to_send = random.choice(updates) 
 
print update_to_send # Para efeitos de debug 

并且由于随机的性质有时会出现的错误:

Traceback (most recent call last): 
  File "C:\Users\anlopes\workspace\redes_sociais\src\twitterC.py", line 77, in <module> 
    updates.append([{"url": feed_a_enviar["linktoourpage"], "msg": d.entries[i].title + ", "}]) 
IndexError: list index out of range 

我没有遇到错误,列表“feeds_updates”是一个包含 8 个元素的列表,我认为声明得很好,RANDOM 将从 8 个元素中选择一个...

谁能告诉我这里发生了什么?

PS:抱歉我的英语不好。

最好的问候,

请您参考如下方法:

使用 range 进行迭代几乎总是不是最好的方法。在 Python 中,您可以直接遍历列表、字典、集合等:

for item in d.entries: 
    updates.append([{"url": feed_a_enviar["linktoourpage"], "msg": item.title + ", "}]) 

显然 d.entries[i] 会触发错误,因为该列表包含的项目少于 8 个(feeds_updates 可能包含 8 个,但您没有迭代该列表) .