我无法理解这一点......
无法运行此代码,我不知道为什么会出现语法错误。
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小时)。
答案 0 :(得分:19)
except
之后你不能再拥有else
。 try
,except
和else
块与函数调用或其他代码不同 - 您不能随意混合和匹配它们。它始终是一个特定的序列:
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。也许你最终意味着什么?