2012-03-21 112 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() 

這段代碼做了什麼? (除了log.write部分外,我完全理解它,不需要解釋其餘部分,我只是將其餘部分加入上下文)這個python代碼是做什麼的?

+0

它記錄異常。 'log.write('%s \ n'%e)'意味着'寫一些東西給文件,並用'e'作爲寫出來的東西。它被稱爲字符串格式。 – birryree 2012-03-21 02:37:39

+0

換句話說,你的問題是「log.write()的這個參數是什麼意思?」你最好問一個更具體的問題。 「這個代碼做什麼?」是非常含糊和通用的。 – jhocking 2012-03-21 02:37:41

+2

你*嘗試過*嗎? – 2012-03-21 03:28:44

回答

2

該代碼大致相當於dictionary.get(name),只是在查找不存在的密鑰的情況下,不存在的密鑰的名稱也寫入文件logfile.txt。與dict.get類似,在這種情況下將由函數返回對象None,並且將重新提出異常將而不是

您可以通過在解釋實驗搞清楚自己:

>>> 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',) 
  • 注意它過度寫入文件時,它不會將文件追加。
0

它打開一個名爲logfile.txt的文件,並將與該例外相關的消息寫入它。

0

嘗試返回字典[name]的值。如果不成功,則將錯誤寫入外部文件。

0

它將異常寫入logfile.txt。

%S取代有E(其爲異常字符串表示)

\ n是新行字符。

-1

它「試圖」從字典中返回值。