1

我正在(不断地)使用 gmail 和 imaplib 开展一个项目。我正在 gmail 中搜索包含特定单词的电子邮件,并收到一个唯一 ID 列表(我的大部分代码都基于/是 Doug Hellman 的,来自他出色的imaplib 教程)。这些唯一的 id 被保存到一个列表中。我试图从列表中提取一个 id,但 random.choice 一直在提取整个列表。这是代码:

import imaplib
import random
from imaplib_list_parse import parse_list_response

c = imaplib_connect.open_connection()
msg_ids = []
c.select('[Gmail]/Chats', readonly=True)
typ, msg_ids = c.search(None, '(BODY "friend")')
random_id = random.choice(msg_ids)
print random_id

我在解释器中搞砸了,msg_ids 绝对是一个列表。我还尝试提取数组的特定元素(例如:msg_ids[1] 等),但它显示“IndexError: list index out of range”,我理解为“您要查找的东西不存在” ,这是令人困惑的,因为它就在那里。

是否有任何时候列表不是列表?或者其他的东西?我很困惑。

与往常一样,我感谢 stackoverflow 的优秀人士提供的任何反馈:)

4

1 回答 1

1

我认为 random_id 是一个列表列表,类似于:[[1,2,3,5]]。所以当你调用 时msg_ids[1],它会 raise IndexError。并且由于列表中只有一个元素,因此random.choice()始终返回该元素。你可以试试:

print random.choice(msg_ids[0])

要调试此类事情,您可以尝试打印random_id,或使用IPython交互代码来找出问题。

于 2012-03-16T00:47:52.727 回答