Python コンソール実行コマンド一覧を表示
概要
- Python コンソールで色々動かした後、実行ファイル化したい等あった時、実行コマンドをもう一度見たい!!
- モジュール「readline」を使えば簡単に解決。
前提
- (0) Python をコンソール実行して、何かコマンドを実行していた。例えば、フィボナッチ出力関数の作成。
- fib1 は失敗版。fib2 で正しいものを作った。
$ Python >>> def fib1() : ... a = 1 ... b = 1 ... while ( True ) : ... buf = a ... a = b ... b += a ... yield b ... >>> g = fib1() >>> g.next() 2 >>> g.next() 4 >>> g.next() 8 >>> >>> def fib2() : ... a = 0 ... b = 1 ... while ( True ) : ... buf = a ... a = b ... b += buf ... yield b ... >>> g = fib2() >>> g.next() 1 >>> g.next() 2 >>> g.next() 3 >>> g.next() 5 >>> g.next() 8 >>> g.next() 13
- (1) ここで、fib2 を実行ファイル化したくなった。履歴をたどるのは面倒…。
readline の使用
- (2) モジュール「readline」を使うことで、以前のログを全て表示することが可能。
- import 前のログ、Python コンソール実行時のものから出力される。
>>> import readline >>> >>> for i in range( readline.get_current_history_length() ) : ... print readline.get_history_item(i) ... None def fib1() : a = 1 b = 1 while ( True ) : buf = a a = b b += a yield b g = fib1() g.next() def fib2() : a = 0 b = 1 while ( True ) : buf = a a = b b += buf yield b g = fib2() g.next() import readline for i in range( readline.get_current_history_length() ) :
- ※ 繰り返し使った「g.next()」は履歴から引っ張ってきたものだったためか、履歴上では各一回ずつ実行したことになっている。
参考
- ググって見つけた stackoverflow の記事のものをそのまま。便利。