これによると: http://code.activestate.com/lists/python-list/413540/をtokenize.generate_tokens使用する必要があり、 を使用しないでくださいtokenize.tokenize。
これは で完全に正常に動作しPython 2.6ます。しかし、それはもう動作しませんPython 3:
>>> a = list(tokenize.generate_tokens(io.BytesIO("1\n".encode()).readline))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.2/tokenize.py", line 439, in _tokenize
    if line[pos] in '#\r\n':           # skip comments or blank lines
ただし、Python 3これも で機能します (また、目的の出力も返します)。
a = list(tokenize.tokenize(io.BytesIO("1\n".encode()).readline))
ドキュメントによると、tokenize.tokenizeこのモジュールを使用する新しい方法のようです: http://docs.python.org/py3k/library/tokenize.html。tokenize.generate_tokensもう文書化さえされていません。
しかし、generate_tokens文書化されていないのに、なぜこのモジュールにまだ関数があるのでしょうか? これに関するPEPは見つかりませんでした。
のコード ベースを維持しようとしています。とをPython 2.5-3.2呼び出す必要generate_tokensがありますか? 何か良い方法はありませんか?Python 2tokenizePython 3