2016-10-20 31 views
-1

我必須爲我的畢業論文編寫一個簡單的垃圾郵件過濾器。我的目的是打開並閱讀兩個不同的列表,一個用於垃圾郵件和一個用於火腿。名字(cartella)就像英文文件夾。問題是,當我打印垃圾郵件時,它只打印數組spam[0]的第一個元素,當我打印長度時打印1,但它應該打印1500.問題出在功能上。我需要幫助。Python - 試圖創建一個簡單的反垃圾郵件過濾器

這是我的代碼:

import nltk 
import os 

def importalista(cartella): 
    lista=[] 
    listafile=os.listdir(cartella) 
    for file in listafile: 
     f=open(cartella + file, 'r+') 
     lista.append(f.read()) 
     f.close() 

     return lista 

spam = importalista('C:\\enron1\\spam\\') 
ham = importalista('C:\\enron1\\ham\\') 
print(len(spam)) 
+2

由於'return'語句是你的'for'循環內,你的循環將只運行一次迭代。如果將'return'移出'for'循環,它將在'for'循環完成後返回。 – khelwood

+0

您的退貨聲明不應縮進,對吧?現在你閱讀第一個文件後返回。 – user1337

+0

感謝您的回覆。那麼我應該把迴歸線放在哪裏? –

回答

0

你裏面有return語句for循環。它將在第一次迭代之後退出函數。如果你改變你的代碼如下,這是正確的。 進口NLTK 進口OS

def importalista(cartella): 
    lista=[] 
    listafile=os.listdir(cartella) 
    for file in listafile: 
     f=open(cartella + file, 'r+') 
     lista.append(f.read()) 
     f.close() 

    return lista 

spam = importalista('C:\\enron1\\spam\\') 
ham = importalista('C:\\enron1\\ham\\') 
print(len(spam)) 
+0

感謝您的回覆。那麼我應該在哪裏放回線? –

+0

感謝您的回覆。那麼我應該在哪裏放回線? –

+0

好吧,我做了但是,它給了我這個錯誤 –