Python:使用语句和执行选项处理

Python:使用语句和执行选项处理,python,with-statement,Python,With Statement,我给出以下代码片段, 在代码结束时,我得到了一个空白的输出文件 在with上下文中,当引发异常时,文件将关闭,并在下一次迭代中再次重写 with open('output', 'w') as f: try: for i in range(1, 100): if i % 2 == 0: f.write('%d \n' % i) else: raise Ex

我给出以下代码片段, 在代码结束时,我得到了一个空白的输出文件

在with上下文中,当引发异常时,文件将关闭,并在下一次迭代中再次重写

with open('output', 'w') as f:
    try:
        for i in range(1, 100):
             if i % 2 == 0:
                 f.write('%d \n' % i)
             else:
                 raise Exception()
    except Exception as e: 
        pass
我的理解正确吗? 如果是这样,为什么会出现这种行为?因为我正在处理异常

with
语句总是关闭文件,对吗 每当在侧块中引发异常时


使用带有语句的
有什么可能的解决方案?

当使用
尝试
/
块时,
尝试
块在
块完成后不会继续

一个可能的解决方案是用
pass
语句替换
raiseexception()
语句,该语句当前正在引发一个无意义的异常


事实上,你可能应该读一读关于……的书。

我被你的问题弄糊涂了。您是否在问,为什么在引发异常时,
循环会结束,而不是继续下一个循环?您的问题是,为什么文件会被覆盖?如果是这样,答案是
w
总是创建一个新文件。哦,是的,我知道了。错误:)