2013-01-31 82 views
0

我對Python很新穎,我創建了一些簡單的Python代碼(下面)來打印(或返回)body,主題和來自.eml文件的電子郵件地址。這工作正常。但是,如何將此代碼應用於.eml文件的文件夾?適用於多個文件或文件夾的Python代碼

import email 

fp = open('C:\emlfiles\TEST_00000.eml') 

msg = email.message_from_file(fp) 

subject = msg.get('subject') 
subject = str(subject) 
fromAdd = msg.get('from') 
fromAdd = str(fromAdd) 
payload = msg.get_payload() 
if type(payload) == type(list()) : 
    payload = payload[0] 
if type(payload) != type('') : 
    payload = str(payload) 

print subhec + fromAdd + payload 
+0

對Python函數讀了。第一步是將此代碼轉換爲接受文件名作爲輸入的函數。 – mgilson

回答

1

把家居循環:

import email 

infolder = "C:\\emlfiles\\" 
for infile in os.listdir(infolder): 
    fp = open(os.path.join(infolder, infile)) 
    msg = email.message_from_file(fp) 
    # etc 

也許更好。將換行代碼的函數,然後調用它:

def process_email(infile): 
    fp = open(infile) 
    msg = email.message_from_file(fp) 
    subject = msg.get('subject') 

infolder = "C:\\emlfiles\\" 
for infile in os.listdir(infolder): 
    process_email(os.path.join(infolder, infile)) 
+0

功能建議完美運作。謝謝。 – ZeeeeeV

2

看看,它做你想做的。使用os.listdir

+0

我會+1。但是你做了很多文件操作,非常小但非常美妙的path.py庫是你的朋友。它只有一個文件(https://github.com/jaraco/path.py),並且通過在路徑('/ your/path')中執行'for d',能夠遞歸所有dir。 walkdirs()'' –

相關問題