2011-09-16 20 views
11

Viene visualizzato il seguente errore durante la chiamata a una funzione predefinita per analizzare una e-mail in Python.Analisi email: TypeError: parse() richiede almeno 2 argomenti (2 dati)

txt = parser.Parser.parse(fd, headersonly=False) 

E l'errore che ho ottenuto è

TypeError: parse() takes at least 2 arguments (2 given). 

Qualcuno può dirmi il modo per risolvere questo problema?

risposta

8

Questo perché .parse() è un metodo di istanza, non un metodo di classe.

Invece, provare Parser().parse(…) o eventualmente email.message_from_file/email.message_from_string.

+5

Questo è quasi sempre il problema quando si ottiene un messaggio "prende almeno X argomenti (Y dato)" dove X e Y in qualche modo non hanno senso (come corrispondono). – agf

+0

Ho provato e-mail.message_from_string che funzionava bene. Volevo provare il metodo di analisi. Grazie per la risposta e il suo funzionamento. :) – Shobitha

+0

Cool, felice, funziona. Per accettare la mia risposta, fai clic sulla casella di controllo sotto il "numero di voti" e le frecce su/giù sulla sinistra. –

15

Ho ottenuto lo stesso errore di base per un motivo diverso: specificando un argomento che ha un valore predefinito ma dimenticando di fornire un argomento che non ha alcun valore predefinito. Per esempio,

def greeting(name,root = "Hello, "): 
    print root + name 
greeting(root = "Good morning, ") 

rendimenti

TypeError: greeting() takes at least 1 argument (1 given) 

Il "1 proposta" qui è il (opzionale) argomento "root" ma la (richiesto) argomento "Nome" è stata erroneamente omessa.

+2

eccellente, il messaggio di errore dovrebbe essere più chiaro anche se in qualche modo basta osservare la firma per vedere l'errore – maazza

Problemi correlati