これによると: 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 2
tokenize
Python 3