打开(文件)除外

时间:2013-03-07 12:01:44

标签: python python-2.7

在try ... except块中,我想将异常错误消息记录到except路径中的文件中。

try:
   doc = etree.parse(urllib2.urlopen(url))
except Exception, e:

   print '%s: %s' % (e, url)
   with open('error.txt', 'a') as f:
     f.write('%s:%s\n' % url, e)
   return

打印显示错误,但打开... f.write时不会显示错误。

在同一个脚本中,relaxng验证被写入文件

if not RELAXNG.validate(doc):
  with open('error.txt', 'a') as f:
    f.write('%s\n' % RELAXNG.error_log)
  return

有人可以向我解释,为什么

with open('myfile.txt', 'a') as f
  f.write( ...

if 语句中是可能的,但在中除之外没有?

3 个答案:

答案 0 :(得分:4)

write()不接受多个参数;你可能缺少括号:

f.write('%s:%s\n' % (url, e))

除此之外,使用绝对路径,而不是相对路径,因为您可以轻松地在意外的地方写入文件。

答案 1 :(得分:0)

except内的文件操作正常。

>>> try:
    raise SyntaxError("Hello")
except Exception:
    with open("in.txt") as f:
        print "F"


F

答案 2 :(得分:0)

它应该工作。试试这个例子:

try:
    raise Exception
except Exception:
    with open('error.txt', 'a') as f:
        f.write('foobar')

如果你运行上面的内容,你会看到foobar被写入档案。

您的流程是否可以写入error.txt?有一些原因它没有写入你的文件,但并不是因为在一个except块中不允许使用'with'文件上下文。