1

私は (継続的に) gmail と imaplib を使用したプロジェクトに取り組んでいます。特定の単語を含むメールを gmail で検索し、一意の ID のリストを受け取りました (私のコードのほとんどは、Doug Hellman の優れたimaplib チュートリアルに基づいています)。これらの一意の ID はリストに保存されます。リストから 1 つの 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]ますIndexError。また、リストには要素が 1 つしかないため、random.choice()常にその要素を返します。あなたが試すことができます:

print random.choice(msg_ids[0])

この種のものをデバッグするには、 を印刷するrandom_idか、 を使用IPythonしてコードをインタラクティブにして問題を見つけることができます。

于 2012-03-16T00:47:52.727 に答える