Python東海Vol.5 IPythonをマスターしよう
-
Upload
hiroshi-funai -
Category
Technology
-
view
24.115 -
download
0
Transcript of Python東海Vol.5 IPythonをマスターしよう
IPythonをマスターしよう Python東海 Vol.5
株式会社モノスペース
タブ補完例えば、sys モジュールのメソッド、属性を表示したい
In [1]: import s[TAB] # <- sまでタイプしてTAB モジュール補完候補表示
set setattr slice sorted staticmethod str sum super sys
In [2]: import sys
In [3]: sys.[TAB] # <- sys.までタイプしてTAB補完候補表示
In [4]: sys.__class__
.sys.__class__ sys.__delattr__ ...
イントロスペクション例えば、re モジュールについて調べたい
In [1]: import re
In [2]: re? # オブジェクトに関する情報を表示(省略あり)
In [3]: re?? # オブジェクトに関する情報を表示(省略なし)
In [4]: %pdoc re # docstring表示
In [5]: %pdef re.search # re.searchの宣言部表示
In [6]: %psource re.search #re.search メソッドのソースコード表示
In [7]: %pfile re.search #re.search が定義されているファイルのソースコードを表示
マジックコマンドIPythonの独自のコマンド
%[TAB] #マジックコマンドの一覧%alias %autocall %autoindent ...
※automagicがON(デフォルトでON)だと、%を付けなくても実行できる。
In [1]: alias #これで実行できるところでマジックコマンドに定義されてないのに、ls とかが動くのはなぜ?
%alias #シェルコマンドがマップされている[('cat', 'cat'), ('clear', 'clear'), ('less', 'less'), ('mkdir', 'mkdir'), ...]
%alias d date # エイリアスの追加。 dと打つとdateが実行される
シェルアクセスIPythonを終了せずにシェルコマンドを実行したい
In [1]: !cal # cal コマンドが直接シェルに渡されるIn [2]: d = !date # date コマンドの結果を d に代入In [3]: d # <class 'IPython.genutils.SList'> 特殊なリストになるIn [4]: !echo $$PATH # $$で環境変数へのアクセス
キャッシュアウトプットキャッシュ
Out という辞書に格納
_1 == Out[1] == _oh[1]
_, __, ___ ※ 最新3つの履歴
インプットキャッシュIn という辞書に格納
_i1 == In[1]
_i, _ii, _iii ※ 最新3つの履歴
In [1]: print datetime.now()datetime.nowをもう一回実行したい
In [2]: _i1 # これだと文字列が入ってるだけなのでOut[2]: u'print datetime.now()\n'
In [3]: exec _i1 #ひとつ前のを実行なら、 exec _i だけでもオッケー。もしくは、%r でも可。
履歴In [1]: _dh # cd したディレクトリが入った辞書(終了後も保存)
In [2]: _oh # Out の履歴が入った辞書
In [3]: %hist # 実行コマンド履歴(In の履歴)
In [4]: %rep # 直前のOutを次のプロンプトに表示In [0]: spam = ‘python’
In [1]: spam
Out [1]: ‘python’
In [2]: %rep
In [3]: python
%rep に引数を渡すことも出来る。 %rep 1 とか %rep 1-3 5 とか %rep datetime とかも可
しかし、なぜか自分の Leopard python2.5.1 ipython0.91で動かない!Linuxでは動いた。
%rep datetime と文字列を指定した場合は、履歴をたどって最初にその文字列が見つかったOutを使用する
ブックマークよく行くディレクトリをブックマークしておきたい
In [1]: %bookmark home #カレントディレクトリをブックマーク
In [2]: %bookmark -l #ブックマーク一覧
Current bookmarks:
home -> /Users/hfunai
In [3]: cd -b home # home=/Users/hfunai へ移動
In [4]: %bookmark -d home # ブックマークからhomeを削除
ブックマークは、IPythonを終了しても保存される
ディレクトリスタックIn [1]: %pushd # カレントディレクトリをスタックに入れる
Out[0]: ['~']
In [2]: %dirs # ディレクトリスタックを表示
Out[1]: ['~']
In [3]: %cd ~/SourceCodes
In [4]: %pushd # カレントディレクトリをスタックに入れる
Out[3]: ['~/SourceCodes', '~']
In [5]: %cd /usr/lib/python2.5/site-packages/
In [6]: %popd # ディレクトリスタックの[0]へ移動
In [7]: %pwd # '/Users/hfunai/SourceCodes' を表示
ストレージIPython終了後も値を保存しておいて、また使いたい
In [1]: spam = ‘Python Tokai’
In [2]: %store spam
一旦、IPythonを終了
In [1]: spam
Out[1]: 'python tokai' #spamを上書き
In [2]: spam = ‘Python Nagoya’
In [3]: store -r spam # ‘Python Tokai’が復活(もう一度保存するまで前の値が残ってる)
In [4]: store -d spam # ‘Python Tokai’がをストレージから削除
In [5]: store # 引数なしだと一覧表示
マクロ%macro [マクロ名] 1-3 5
In [1]: import os
In [2]: import sys
ln [3]: import re
In [4]: from datetime import datetiem # spellミス!
In [5]: from datetime import datetime
%macro mymacro 1-3 5 # 4は飛ばす
In [6]: mymacro #マクロを実行
マクロはストレージに保存しておくと便利
ログログをファイルに保存する
%logstartIn [1]: import os
In [2]: import sys
In [3]: import re
%logstop # %logoffで一時的に停止、%logonで再開IPythonを抜けて、シェルで実行
$ ipython -logplay ipython_log.pyログファイルの内容を実行してから、IPythonシェルが開始する。
ソースコード編集In [1]: %cpaste #クリップボードにあるソースをペーストしたいとき
In [2]: %edit #エディタを開いて編集(設定ファイルでエディタを指定)
In [3]: %edit 1-10 #1-10のInをエディタで
In [4]: %save 1-10 #1-10のInをファイルへ保存
簡易バージョン管理%editごとに一時ファイルが作成されるのを利用
In [5]: %edit _i2 # In [2] の内容を編集
In [6]: %edit _i3 # In [3] の内容を編集
クラスとか関数を定義したいときは、%editで書くと、便利。export EDITOR=vimしておきましょう。
簡易バージョン管理は別に使わないよなあ。
doctestへの対応起動オプションで対応
$ ipython -cl # クラシックモード。プロンプトを >>> にする。
※ただし、インプットキャッシュとか一部の機能が使えなくなる。
起動中に一時的に変更
%doctest_mode # プロンプトが >>> になる
%hist -tn #ヒストリを行番号表示なしで
%hist -tnの内容を%doctest_modeにしてからコピペ
%doctest_mode を再実行すると通常モードに戻る
その他のコマンド%rehash # $PATHを見てコマンドすべてを%aliasに入れる
%rehashx # rehashと一緒だけど、exectableかチェックする
%who # 名前空間を表示 %whos %who_ls とか
%reset # 名前空間のリセット 変数とか全部消える
%clear # Input,Outputなどの履歴を消去
%run # IPython上でPythonスクリプトファイルを実行する
%timeit # ベンチマーク的なもの
%pycat # Pythonファイルをソースコードハイライトして表示
%bg # 別スレッドをたててバックグラウンドでスクリプトを実行
%quickref # IPythonチートシート
設定ファイル起動後の挙動を変更する~/.ipython/ipy_user_conf.py
他にもrcファイルがあるけど、 このファイルは起動時に必ず読み込まれるので、とりあえずはこちらを編集。ただ、このファイルとrcファイルとは記述が異なる。こっちはpythonスクリプト。
プロファイルプロファイルは、rcファイルを編集。
~/.ipython/の中にipythonrc-[プロファイル名]
というファイルを作成して、起動オプションでプロファイルを指定する。
$ ipython -p [プロファイル名]常に使用したい設定はipy_user_conf.pyに書いて、場合によって変えたい設定はrcでプロファイルを指定してって感じの使い分けをしたらいいのかな。
参考文献本家のドキュメント
http://ipython.scipy.org/doc/rel-0.9.1/html/