2012-02-26 8 views
0

新しい電子メールを1つ1つ質問して質問し、その内容を見つけて別のアプリケーションのコンテンツを使用したいと思います。リストオブジェクト内の全アイテムを検索

私の最初のステップは、IMAP4オブジェクトの検索attrを使って行われた検索からの戻り値を解釈することでした。私は私に返されたリストの中にどのようなデータがあるのか​​把握しようとしています。
印刷を介してオブジェクトツリーを調べるにはどうすればよいですか?それとも、文字列で電子メールの内容を取得するのが良いでしょうか?

たとえば、「応答」という名前の変数から、 unseen email content: ['3 4']のように、次のように返されます。 print response.__class__.__name__を実行すると、「list」が返されます。

"3"と "4"に他のデータがあることを知っていますが、私はちょうど何がわかりません。

更新:具体的には、これは(なし、「(UNSEEN)」)IMAP4obj.searchへの呼び出しの戻りである

+0

まあ、 '応答.__クラスと組み合わせてEclipseを試してみてください、まだIDEを使用しない場合__.__ name__'はあなたresponse''のクラスの名前を与えます。 'response'のすべての属性のリストが必要な場合は、' print dir(response) 'を試してください。 –

+0

OKですが、dirのオプションだけでなく、すべての*データ*を見たいのですか?私は理解しているか分からない... – jml

+1

'3 4'は3文字の文字列である!他のデータはありません!より多くの情報を提供する必要があります。 –

答えて

1

# M is a connected IMAP4 instance... 
typ, msgnums = M.search(None, 'FROM', '"LDJ"') 

タプルが返され、あなたはそれを明確に助けることができるかどうかを確認し、

print(type(typ)) 
print(dir(typ)) 
print(type(msgnums)) 
print(dir(msgnums)) 

は、ドキュメントを読んでみてください、試すことができそうですあなたの疑問を払拭するか、あなたの疑問をより明確にする。

+0

ドキュメントには、M.search()から返される情報に関する情報がありますか?これは私がPythonのドキュメントについて嫌いなものです...私は読み終えようとしているものだけを持っています... – jml

+0

ok、文字列 "OK"とリスト[ 3、4]が返される。私が本当にしたいのは、それをポーリングして受信トレイに入ってくる新しいメールの内容を取得することです。私は最初にそれを明確にすべきだった(qを更新した)。誰かがこれに関するヒントを持っているのですか、それとも私を指すために別の質問がありますか? – jml

+0

非常にPythonのドキュメントを使用して簡単に、IMP4これらのすべてのメソッドを持つクラスオブジェクトです。この場合、私は[IMP4.fetch](http://docs.python.org/library/imaplib.html#imaplib.IMAP4.fetch)に行きます。_message_set_は1つのメッセージ(3つまたは4つの)と_message_parts_は、括弧で囲まれたメッセージ部分名の文字列でなければなりません。私はこのモジュールを使ったことはありませんが、私は推測しています。また、コマンドラインを使用して、ドキュメントからコマンドをテストしてアクセスすることもできます。 –

1

それは、プログラムの場合は、PDBをインポートし、pdb.pprint.pprint(response)

をやってみてください自分のマシンで実行している場合は、pdb.set_trace()を実行して応答することもできます。

ipdbモジュールにはより良いバージョンがありますが、通常はデフォルトではインストールされません。 Pythonのドキュメント(here)この例から

+1

素晴らしいです。ありがとうございました! – jml

+0

ようこそ。 – rbanffy

1

デバッガのようなサウンドが役に立ちます。デバッガでIDEを使用している場合、ブレークポイントを設定してオブジェクトをイントロスペクトします。

あなたはPyDev