附錄B 更多IPython系統(tǒng)相關(guān)內(nèi)容
B.2 與操作系統(tǒng)交互
IPython的另一個特性是它可以讓你無縫地訪問文件系統(tǒng)和操作系統(tǒng)shell扑浸。這意味著蛹锰,除了特殊情況黍翎,你可以像在Windows或Unix(Linux或详、macOS)shell中那樣執(zhí)行大多數(shù)標(biāo)準(zhǔn)命令行操作贝淤,而無須退出IPython柒竞。這些命令包括shell命令、更改目錄命令以及將命令的結(jié)果存儲在Python對象(列表或字符串)中播聪。此外朽基,還有簡單的命令別名和目錄書簽功能布隔。
表B-1是對魔術(shù)函數(shù)及其調(diào)用shell命令的語法的總結(jié)。我將在下一節(jié)簡要地介紹這些特性踩晶。
B.2.1 shell命令及其別名
在IPython中用感嘆號执泰!或者bang開始一行,就是告訴IPython在系統(tǒng)shell中執(zhí)行bang命令后所有的命令渡蜻。這意味著你可以刪除文件(使用rm或del,取決于你的操作系統(tǒng))计济、更改目錄或執(zhí)行任何其他進(jìn)程茸苇。
通過將以!轉(zhuǎn)義的表達(dá)式賦值給變量沦寂,你可以把命令行的shell輸出存儲在一個變量中学密。例如,在我的基于Linux系統(tǒng)的機(jī)器上传藏,機(jī)器通過以太網(wǎng)連接到互聯(lián)網(wǎng)上腻暮,我可以以Python變量的形式獲得我的IP地址:
In [1]: ip_info = ! ifconfig wlan0 | grep "inet "
In [2]: ip_info[0].strip()
Out[2]: 'inet addr:10.0.0.11 Bcast:10.0.0.255 Mask:255.255.255.0'
返回的Python對象ip_info實際上是一個包含各種版本的控制臺輸出的自定義列表類型。
在使用毯侦!時哭靖,IPython也可以替換當(dāng)前環(huán)境中定義的Python值。為此侈离,請在美元符號$前面加上變量名稱:
In [3]: foo = 'test*'
In [4]: ! ls $foo
test4.py test.py test.xml
- % alias魔術(shù)函數(shù)可以為shell命令定義自定義快捷鍵试幽。舉一個簡單的例子:
In [1]: %alias ll ls -l
In [2]: ll /usr
total 332
drwxr-xr-x 2 root root 69632 2012-01-29 20:36 bin/
drwxr-xr-x 2 root root 4096 2010-08-23 12:05 games/
drwxr-xr-x 123 root root 20480 2011-12-26 18:08 include/
drwxr-xr-x 265 root root 126976 2012-01-29 20:36 lib/
drwxr-xr-x 44 root root 69632 2011-12-26 18:08 lib32/
lrwxrwxrwx 1 root root 3 2010-08-23 16:02 lib64 -> lib/
drwxr-xr-x 15 root root 4096 2011-10-13 19:03 local/
drwxr-xr-x 2 root root 12288 2012-01-12 09:32 sbin/
drwxr-xr-x 387 root root 12288 2011-11-04 22:53 share/
drwxrwsr-x 24 root src 4096 2011-07-17 18:38 src/
你可以像在命令行上一樣使用分號分隔多個命令,并執(zhí)行:
In [558]: %alias test_alias (cd examples; ls; cd ..)
In [559]: test_alias
macrodata.csv spx.csv tips.csv
你會注意到IPython會在會話關(guān)閉后“忘記”所有你在交互中定義的別名卦碾。要創(chuàng)建永久別名铺坞,你需要使用配置系統(tǒng)。
B.2.2 目錄書簽系統(tǒng)
IPython有一個簡單易用的目錄書簽系統(tǒng)洲胖,允許你保存通用目錄的別名济榨,以便你輕松地跳轉(zhuǎn)。例如绿映,假設(shè)你想創(chuàng)建一個指向本書輔助材料的書簽:
In [6]: %bookmark py4da /home/wesm/code/pydata-book
一旦你運行上面的代碼擒滑,當(dāng)我們使用% cd魔術(shù)函數(shù)時,我們可以使用我們定義的任何書簽:
In [7]: cd py4da
(bookmark:py4da) -> /home/wesm/code/pydata-book/home/wesm/code/pydata-book
如果書簽名稱與當(dāng)前工作目錄中的目錄名稱沖突绘梦,你可以使用-b標(biāo)志進(jìn)行覆蓋并使用書簽位置橘忱。使用%bookmark和-l選項,將列出你所有的書簽:
In [8]: %bookmark -l
Current bookmarks:
py4da -> /home/wesm/code/pydata-book-source