2014-07-07 73 views
3

我正在爲python 2.7寫一個電子郵件解析器,將通過sendmail使用別名調用,解析使用電子郵件模塊,然後處理並存儲到一個oracle數據庫:最有效的方式來「Slurp」所有的STDIN成一個字符串

來自/ etc/aliases:

myalias:| | /my/python/script.py

我有麻煩「啜」所有的標準輸入到一個字符串對象,我可以與電子郵件模塊使用:

import email 

# Slurp stdin and store into message 
message = 

msg = email.message_from_string(message) 

# Do something with it 
print msg['Subject'] 

什麼是最有效的方法去做這個?我試過stdin.readlines(),但它最終成爲一個列表。

Thx尋求幫助。 (對不起,如果這是noobish ...我是一個perl轉換,並被迫標準化我的工具使用python,這只是我的第二個腳本。嗯,不是真的「強迫」,我一直想這樣做一段時間但不是像現在這樣的最後期限的槍)

+0

您可以使用'stdin.readlines()',然後使用'msg ='\ n'.join(msg)'(或任何您想要實際使用的字符)加入結果列表 – RevanProdigalKnight

回答

5

sys.stdin.readlines()返回一個行列表。如果您想要的是一個長(多行)字符串,請使用sys.stdin.read()

+1

非常好。正是我需要的。出於某種原因,我認爲stdin.read()必須逐行閱讀。謝謝! – BenH

+2

如果你想啜飲,而不是SIP,繼續閱讀標準輸入,直到它返回0字節,否則你會遇到大郵件的問題。 – tdelaney

相關問題