我(不断)使用gmail和imaplib开发项目。我正在搜索gmail以查找包含特定单词的电子邮件,并收到一个唯一ID列表(我的大部分代码都是基于Doug Hellman的,来自他出色的imaplib tutorial)。这些唯一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的精彩人士给予的任何反馈:)
我认为random_id是一个列表列表,例如:[[1,2,3,5]]
.So当你调用msg_ids[1]
时,它会提升IndexError
。由于列表中只有一个元素,random.choice()
总是返回元素。你可以试试:
print random.choice(msg_ids[0])
要调试这类事情,您可以尝试打印random_id
,或使用IPython
来交互代码以找出问题所在。