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

ifo*_*orm 3 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

Run Code Online (Sandbox Code Playgroud)

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

Dav*_*d Z 20

你不能再拥有另一个exceptelse.的try,exceptelse块不像函数调用或其他代码-你不能只混合和你喜欢它们匹配.它始终是一个特定的序列:

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)
Run Code Online (Sandbox Code Playgroud)

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

try:
    ...
except:
    ...
else:
    try:
        ...
    except:
        ...
Run Code Online (Sandbox Code Playgroud)

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

try:
    ...
except:
    try:
        ...
    except:
        ...
else:
    ...
Run Code Online (Sandbox Code Playgroud)