読者です 読者をやめる 読者になる 読者になる

インタラクティブモードで補完とかヒストリの読み書きとか

Python

僕は最初に触った言語がJavaでして、主にEclipseを使って書いています。Eclipseは重いのが欠点なんですが、補完が強力でずっと使っていました。というかJavaは補完なしでは書くことができないw。

で、最近は*1Pythonでプログラミングやっています。miyaga50とかと「Pythonで補完できる方法ないかね?」とかという話をしていて、探してみました。すると発見!!

/usr/lib/python2.4/site-packages/sitecustomize.pyというファイルに

import rlcompleter,readline
readline.parse_and_bind("tab: complete")

という記述をしたところインタラクティブシェルをやるときにタブで補完がきくようになります*2。ため息が出るくらいうれしい補完だ。。。

インタラクティブで打ったプログラムを読み書きする

Pythonのインタラクティブシェルは、プログラムをテストするときとか試しに使ってみる、みたいなときに便利です。インタラクティブシェルでうまく動かすことができたら、それをファイルにもう一回書いて…みたいことを今までやっていました。しかし、一回打ったものをもう一回打つとか激しく面倒ですよね。たとえそれが数行のことだとしても。で、これも探してみたところどうにかできそうなものを見付けました。

上のリンクを参考に、インタラクティブシェルモードで、

>>> import readline
>>> readline.write_history_file("test.txt")

とやるとカレントディレクトリにのtest.txt*3に自分がインタラクティブシェルに打ったプログラムが吐き出されます。例えばこんな感じに。

for i in range(10):
    print i
readline.write_history_file("test.txt")

で、これを焼くなり、煮るなり、コピペするなりすれば自分で二回目を打つ必要はありません。ちなみにwrite_history_fileとかいう長い名前のやつは上の補完を使えば楽チンにできますね。はっぴー。

*1:っていってもここ何日からかですが

*2:他にもいろいろ設定方法はあるみたいだけど、とりあえず今回はこれを採用。

*3:この名前は任意の名前でおk。ディフォルトで~/.historyに保存される。