强大的Python增强版交互式命令行工具——IPython

本文主要介绍IPython这样一个交互工具的基本用法。

1. 简介

IPython是《利用Python进行数据分析》一书中主要用到的Python开发环境,简单来说是对原生python交互环境的增强。作者进行Python开发最经典的开发环境搭配是:IPython外加一个文本编辑器。其实我自己平时写python代码也差不多是这样的开发环境:Windows系统下是IPython加notepad++,Linux系统下是IPython加vim,写起代码来体验很流畅,很容易获取到写代码时候的那种“流体验”。

书中讲到,IPython的设计目的是在交互式计算和软件开发这两个方面最大化地提高生产力,它鼓励一种“执行-探索”的工作模式,支持matplotlib等库的绘图操作。同时IPython还提供一个基于WEB的交互式浏览器开发环境(Jupyter Notebook),用起来也很不错。

2. 基础用法

1. Tab键自动补全

和其他命令行环境的Tab自动补全功能类似,不过会隐藏那些以下划线开头的方法和属性(为了防止内容太多)。厉害的是哪怕是在python字符串中也可以自动补全类似文件路径的字符串。比如:


2. 内省

在方法或变量的前面或后面加一个问号(?)就可以将有关该方法或变量的一些通用信息都显示出来,这叫做内省;使用??还可以显示函数的源代码。见下:



3. ?和通配符结合使用搜索命名空间

4. %run命令

%run xxx.py:可以执行一个python脚本xxx.py,脚本是在一个空的命名空间中运行的。成功运行脚本后,在IPython中可以使用脚本中定义的变量和函数。
如果希望在脚本中能访问IPython之前定义的变量和函数,那么需要用-i参数执行:
%run -i xxx.py

5. 执行剪贴板中的代码

%paste:直接执行。
%cpaste:可以修改后再执行。

6. IPython键盘快捷键

  • Ctrl + P或上箭头:后向搜索命令历史记录中以当前输入的文本开头的命令。
  • Ctrl + N或下箭头:前向搜索命令历史记录中以当前输入的文本开头的命令。
  • Ctrl + R:按行读取的反向历史搜索(部分匹配)。
  • Ctrl + Shift + V:从剪贴板中粘贴文本。
  • Ctrl + C:终止当前正在执行的代码。
  • Ctrl + A:将光标移动到行首。
  • Ctrl + E:将光标移动到行尾。
  • Ctrl + K:删除从光标开始到行尾的文本。
  • Ctrl + U:删除从行首到光标处的文本。
  • Ctrl + F:将光标向前移动一个字符。
  • Ctrl + B:将光标向后移动一个字符。
  • Ctrl + L:清屏。

7. 魔术命令

%开头的一些命令,比如%run就是一个魔术命令,可以使用%run?来查看其详细用法。

  • %quickref:显示IPython的快速参考。
  • %magic:显示所有魔术命令的详细文档。
  • %debug:从最新的异常跟踪的底部进入交互式调试器。
  • %hist:打印命令的输入(可选输出)历史。
  • %pdb:在异常发生后自动进入调试器。
  • %paste:执行剪贴板中的python代码。
  • %cpaste:打开一个特殊特提示符以便手工粘贴待执行的python代码。
  • %reset:删除interactive命名空间中的全部变量/名称。
  • %page OBJECT:通过分页器打印输出OBJECT。
  • %run xxx.py:执行xxx.py脚本文件。
  • %prun statement:通过cProfile执行statement,并打印分析器的输出结果。
  • %time statement:计算statement的执行时间。
  • %timeit statement:多次执行(次数可以通过参数配置)statement以计算平均执行时间。对那些执行时间非常短的代码很有用。
  • %who:显示interactive命名空间中定义的变量,如下:
  • %who_ls:显示interactive命名空间中定义的变量(列表形式),如下:

  • %whos:显示interactive命名空间中定义的变量(详情形式),如下:

  • %xdel variable:删除变量variable,并尝试清除其在IPython中的对象上的一切引用。

8. 打开pylab模式:

启动IPython时使用:ipython --pylab,这样就可以在IPython命令行中进行绘图等操作了,如下:

9. 输入和输出变量

最近的两个输出结果分别保存在下划线和双下划线两个变量中,如下:


10. 记录输入输出过的变量

某一行的输入变量:_iX(X为行号)
某一行的输出变量:_X(X为行号)
见下:

11. 清理命名空间

当处理大数据集时,IPython的输入输出历史会影响到大量的变量的内存释放,所以及时用%xdel%reset清理还是很有必要的。

12. 记录日志

记录输入和输出日志:%logstart -o,将记录整个会话的日志(包括之前的命令),使用详情可以用%logstart?命令查看。

13. 与操作系统交互

  • !cmd:执行操作系统的shell命令。
  • output = !cmd:执行shell命令,并将结果存到output中。
  • %alias new_name cmd:为系统shell命令定义别名。
  • %bookmark:使用IPython的目录书签系统。
  • %cd directory:将工作目录切换到directory路径。
  • %pwd:打印当前的工作目录。
  • %pushd directory:将当前目录入栈,并转向目标目录。
  • %popd:弹出栈顶目录,并转向该目录。
  • %dirs:返回一个含有当前目录栈的列表。
  • %dhist:打印目录访问历史。
  • %env:以dict形式返回系统环境变量。

14. 在执行shell命令时使用IPython环境中的变量

如下:


15. 使用书签

如下:


3. 进阶用法

1. 代码执行时间分析

命令:%time%timeit,如下:



2. IPython HTML Notebook

HTML Notebook是在浏览器中使用的交互式环境,现在最新版本又叫做Jupyter Notebook,功能很强大,完全是一个B/S模式的IDE,体验非常棒。可以用以下命令打开:

  • 安装notebook:pip install notebook
  • 在命令行中打开notebook:ipython notebook(或者:jupyter notebook
  • 出现一个带token的url,把url复制到浏览器中,即出现如下页面:


  • 点击右上角的New—>python 2,即可打开交互式环境:
  • 在输入行中输入%pylab inline命令并执行(Shift + Enter快捷键),即可无缝集成matplotlib的绘图功能到页面中,如图:

3. IPython个性化配置

配置文件在如下目录:
Unix:~/.config/ipython/
Windows:%HOME%/.ipython/
根据配置文件中的注释,即可修改相应的配置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容