0

在 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

打印显示错误,但 with open ... 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语句中使用,但不能在except中?

4

3 回答 3

4

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

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

除此之外,请使用绝对路径,而不是相对路径,否则您可以轻松地将文件写入意外的位置。

于 2013-03-07T12:06:10.153 回答
0

里面的文件操作except工作正常。

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


F
于 2013-03-07T12:07:36.527 回答
0

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

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

如果您运行上述程序,您将看到 foobar 已写入文件。

error.txt 是否可由您的进程写入?它没有写入您的文件是有原因的,但这不是因为在 except 块中不允许使用“with”文件上下文。

于 2013-03-07T12:11:33.657 回答