2012-02-26 93 views
0

我想查詢所有新電子郵件(逐個)並查找它們的內容,以便我可以將內容用於其他應用程序。查找列表對象中的所有項目

我的第一步是解釋通過IMAP4對象的搜索attr完成的搜索的返回值。我試圖弄清楚我返回給我的列表中的數據是什麼。
如何通過打印檢查對象樹?或者,更好的是,我怎樣才能得到電子郵件的內容?

例如,我通過打印返回以下內容: unseen email content: ['3 4']來自名爲「response」的變量。 如果我運行print response.__class__.__name__,則返回「list」。

我知道在「3」和「4」中還有其他數據,我只是不知道是什麼。

更新:具體而言,這是一個呼叫到IMAP4obj.search(無「(UNSEEN)」)

+0

好,'響應.__類__.__ name__'爲您提供一流的response'的'的名稱。如果你想列出所有'response'屬性的列表,試試'print dir(response)'。 – 2012-02-26 02:11:49

+0

好的,但我想查看所有* data *,而不僅僅是來自dir的選項,對嗎?我不知道我明白了...... – jml 2012-02-26 02:14:53

+1

'3 4'是列表中的3個字符串!沒有其他數據!你需要提供更多的信息,否則我們不能幫忙! – 2012-02-26 02:22:20

回答

1

從python文檔(here)這個例子:

# 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 2012-02-26 02:45:19

+0

好吧,我可以看到(並已經sorta知道),有一個字符串「OK」和一個列表[ 3,4]返回。我真正想要做的就是通過輪詢它來獲取收件箱中收到的任何新電子郵件的內容。我應該澄清,在開始(更新q)。有沒有人有關於此的提示,或者可能是另一個問題來指出我? – jml 2012-02-26 02:50:03

+0

它非常容易使用python文檔,IMP4是一個包含所有這些方法的類對象。在這種情況下,我會去[IMP4.fetch](http://docs.python.org/library/imaplib.html#imaplib.IMAP4.fetch),_message_set_是一個整數,表示一個消息(3或4) )和_message_parts_應該是括在括號內的消息部分名稱的字符串。我從來沒有使用過這個模塊,但我猜測。如果您使用命令行並嘗試通過自己測試doc中的命令來訪問它,也可能會有所幫助。 – 2012-02-26 05:46:11

1

您可以嘗試導入PDB並做了pdb.pprint.pprint(response)

返回如果它是一個程序在你自己的機器上運行,你也可以做一個pdb.set_trace()並與迴應玩。

該ipdb模塊有更好的版本,但它通常不會默認安裝。

+1

真棒。謝謝! – jml 2012-02-26 02:36:02

+0

不客氣。 – rbanffy 2012-02-27 01:17:09

1

聽起來像一個調試器可能會有所幫助。如果您正在使用帶有調試器的IDE設置斷點並反思對象。

如果不使用IDE的是,試圖Eclipse結合PyDev