Friday, August 29, 2008

[Python]IPython: Python与Shell的混血王子

无聊的时候试用了IPython便爱不释手了。IPython是一个增强版的Python解释器。你完全可以把它就当作python的解释器来用--没有问题。但它的好处是内置了很多类似linux shell的特性。我觉得对我来说很实用的包括以下这些:
  • 比如可以在IPython里使用ls, pwd, mkdir这些命令而不用先import os 再来os.system("ls")
  • 对于那些没有内置的linux命令及工具,可以用!cmd 或者!!cmd 来调用。就如同在vi里调用外部命令一样
  • 可以用?modulename来查看一个module的用法和结构,相当于help(modulename)的简写了吧
  • 支持使用tab键来补全命令
  • 可以使用用%run filename args来load并执行一个外部py文件。就如同在shell里执行python filename args
  • 可以debug python脚本
以上这些是把IPython作为python解释器(默认的profile)的用法。实际上还可以更夸装一点: ipython -p pysh 来启动IPyhton。 这样默认相当于进入了一个Shell 从而不用!或者!!来调用命令。同时你还具有Python的那些模块和数据结构可以使用。比如你可以使用如下的程序来做找出当前目录下所有的.py文件并生成同名的文件夹(没有扩展名.py):
files=!ls
for f in files:
    if f.endswith('.py'):
        mkdir ${f[:-3]}