11

私は長い間 に恋をしてきましたがzsh、最近になって、ipython対話型インタープリターがpythonそれ自体より優れていることに気づきました。cd 、lsrun または! は確かに非常に便利です。しかし、今では ipython でこのような不器用なシェルを使用するのは奇妙に感じられ、zsh と ipython をより適切に統合するにはどうすればよいか疑問に思っています。

もちろん、.zshrc とすべてのスクリプトを python で書き直して、ipython からシェルの世界のほとんどをエミュレートすることもできますが、それは適切ではありません。とにかく、ipythonをメインシェルとして使用する準備ができていないことは明らかです。

それで、ここに私の質問があります: シェルと python コマンドループの間で効率的に作業するにはどうすればよいですか? 明白な統合戦略が欠けていますか? emacs ですべてを行う必要がありますか?

4

2 に答える 2

7

シェル コマンドを感嘆符で開始して実行し、出力を Python 変数にキャプチャできます。例: ディレクトリ内の/tmpディレクトリを一覧表示する:

ipy> import os
ipy> tmplist = !find /tmp
ipy> [dir for dir in tmplist if os.path.isdir(dir)]

list オブジェクトは、いくつかの便利なメソッドを持つ特別な ipython オブジェクトです。例: .pdfで終わるファイルのリスト

ipy> tmplist.grep(lambda a: a.endswith('.pdf')) # using a lambda
ipy> tmplist.grep('\.pdf$') # using a regexp

魔法のコマンドのリストを読むことでできることはたくさんあります:

ipy> %magic

Ipython ドキュメントのシェル セクションを参照してください。

于 2009-06-10T06:44:42.860 に答える