PythonでCUIをやってみる(windows編) その2

前回(id:dplusplus:20080330)の続き。


Consoleモジュールの解説ページにはなぜか一行入力用のメソッドが載っていない。
探してみると、ダウンロードページのconsole-1.1a1-20011229.zipの中にreadline.pyなるものがあり、それを使えば可能らしいということが分かった。(READMEに(experimental)等と書かれているのが気になるが・・・)


readline.pyを直接使ってみた。(単にパスの通る場所に置けばOK)

from readline import Readline

rl = Readline()

while 1:
	s = rl.readline()
	if s.rstrip('\r\n') != 'q':
		rl.write(s)
	else:
		break


白文字が入力、黄文字が出力。
ありがたいことに日本語入力も通るらしい。


しかし、コンソールの任意の位置にカーソルを置いて一行入力を取る方法がよくわからない。
コード(readline.py、_wincon.c)を流し読みした限りではreadlineをインポートした際にConsoleクラスにreadlineメソッドが追加されるような感じだが、実際に呼ぶとAttributeErrorが投げられる。どうも読み違えてるような予感がするので信じてはいけない
まあ、いざとなればサブクラスでも何でも作って組み込めばいいはずなのであまり気にしないことにする。


次回は各種メソッドのおさらいをしてみる予定。