2012-03-21 4 views
0
def getvalue(dictionary, name): 
    try: 
     return dictionary[name] 
    except Exception as e: 
     log = open('logfile.txt', 'w') 
     log.write('%s\n' % e) 
     log.close() 

Que fait ce code? (Je comprends tout sauf la partie log.write, pas besoin d'expliquer le reste, je viens d'ajouter le reste pour le contexte)Que fait ce code python?

+0

Il enregistre l'exception. 'log.write ('% s \ n'% e)' signifie 'écrire quelque chose dans le fichier, et utiliser 'e' comme chose à écrire'. C'est ce qu'on appelle la mise en forme de chaîne. – birryree

+0

Donc, en d'autres termes, votre question est "qu'est-ce que ce paramètre de log.write() signifie?" Vous feriez mieux de poser une question plus précise. "Que fait ce code?" est très vague et générique. – jhocking

+2

Avez-vous * l'essayer *? –

Répondre

2

Ce code est à peu près équivalent à dictionary.get(name), sauf que dans le cas où une clé inexistante est recherchée, le nom de la clé inexistante est également écrit dans le fichier logfile.txt. De manière similaire à dict.get, l'objet None sera renvoyé par la fonction dans ce cas, et l'exception ne sera pas être re-déclenché.

Vous pouvez effacer les choses pour vous en expérimentant dans l'interpréteur:

>>> d = {'some_key_which_exists': 'some_value'} 
>>> d['some_key_which_exists'] 
'some_value' 
>>> d['some_key_which_does_not_exist'] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
KeyError: 'some_key_which_does_not_exist' 
>>> try: 
... d['some_key_which_does_not_exist'] 
... except Exception as e: 
... print '%s\n' % e 
... 
'some_key_which_does_not_exist' 

>>> e 
KeyError('some_key_which_does_not_exist',) 
  • Notez-le sur-écrit le fichier, il ne rajoutez pas le fichier.
0

Il ouvre un fichier appelé logfile.txt et y écrit le message associé à l'exception.

0

Tente de renvoyer la valeur du dictionnaire [nom]. Si ce n'est pas le cas, écrit une erreur dans un fichier externe.

0

Il écrit l'exception dans logfile.txt.

% s est substitué par E (qui est la représentation de chaîne de Exception)

\ n est le caractère de nouvelle ligne.

-1

Il "essaie" de renvoyer la valeur du dictionnaire.