尝试... else ...除了语法错误

时间:2010-05-08 00:52:00

标签: python

我无法理解这一点......

无法运行此代码,我不知道为什么会出现语法错误。


    try:
        newT.read()
        #existingArtist = newT['Exif.Image.Artist'].value
        #existingKeywords = newT['Xmp.dc.subject'].value

    except KeyError:
        print "KeyError"

    else:
        #Program will NOT remove existing values
        newT.read()
        if existingArtist != "" :
            newT['Exif.Image.Artist'] = artistString


        print existingKeywords

        keywords = os.path.normpath(relativePath).split(os.sep)
        print keywords
        newT['Xmp.dc.subject'] = existingKeywords + keywords

        newT.write()
    except:
        print "Cannot write tags to ",filePath

语法错误发生在最后一个“except:”上。再次......我不知道为什么python会抛出语法错误(在这个问题上花费了大约3小时)。

3 个答案:

答案 0 :(得分:19)

except之后你不能再拥有elsetryexceptelse块与函数调用或其他代码不同 - 您不能随意混合和匹配它们。它始终是一个特定的序列:

try:
    # execute some code
except:
    # if that code raises an error, go here
    # (this part is just regular code)
else:
    # if the "try" code did not raise an error, go here
    # (this part is also just regular code)

如果要捕获else块期间发生的错误,则需要另一个try语句。像这样:

try:
    ...
except:
    ...
else:
    try:
        ...
    except:
        ...

仅供参考,如果您想捕获except块期间发生的错误,同样适用 - 在这种情况下,您还需要另一个try语句,如下所示:

try:
    ...
except:
    try:
        ...
    except:
        ...
else:
    ...

答案 1 :(得分:3)

阅读文档会给你这句话:

  

try ... except语句有一个可选的else子句,当存在时,必须遵循所有except子句。

将else移到处理程序的末尾。

答案 2 :(得分:0)

查看python文档:http://docs.python.org/reference/compound_stmts.html#the-try-statement看起来你可以尝试使用多个elses。也许你最终意味着什么?