这个python代码是做什么的?

问题描述:

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

该代码大致相当于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',) 
  • 注意它过度写入文件时,它不会将文件追加。

它打开一个名为logfile.txt的文件,并将与该例外相关的消息写入它。

尝试返回字典[name]的值。如果不成功,则将错误写入外部文件。

它将异常写入logfile.txt。

%S取代有E(其为异常字符串表示)

\ n是新行字符。

它“试图”从字典中返回值。