下面的示例代碼:如何處理未封多行註釋(Python 2.6中)一個記號化錯誤
import token, tokenize, StringIO
def generate_tokens(src):
rawstr = StringIO.StringIO(unicode(src))
tokens = tokenize.generate_tokens(rawstr.readline)
for i, item in enumerate(tokens):
toktype, toktext, (srow,scol), (erow,ecol), line = item
print i, token.tok_name[toktype], toktext
s = \
"""
def test(x):
\"\"\" test with an unterminated docstring
"""
generate_tokens(s)
導致以下火災:
... (stripped a little)
File "/usr/lib/python2.6/tokenize.py", line 296, in generate_tokens
raise TokenError, ("EOF in multi-line string", strstart)
tokenize.TokenError: ('EOF in multi-line string', (3, 5))
有關此行爲的一些問題:
- 我應該在這裏抓住'有選擇地'忽略tokenize.TokenError嗎?或者 應該停止嘗試從非兼容/非完整代碼生成令牌嗎?如果是這樣,我該如何檢查?
- 這個錯誤(或類似的錯誤)是否可以由未終止的文檔字符串以外的其他內容引起?
爲什麼downvote (問題後一年半)? – ChristopheD 2011-02-06 08:11:50