2012-08-22 40 views
2

所以我開始在我的Mac上使用IPython。 !!!運算符(應該執行shell命令並將輸出作爲有用數據)正在生成語法錯誤。它似乎只是將它解釋爲(!(!ls)),並吐出!ls:命令未找到。我不能谷歌感嘆號,我不知道還有什麼地方可以打IPython!不工作

+1

你正在將執行shell('sh','bash'等)的特性與python的REPL混合起來。你能否用更具體的細節來解決問題?這與python有什麼關係? –

+1

@BrianCain這是IPython的一個特性(注意領先的'I')。一個增強的REPL,允許使用shell命令。 – Keith

+0

@凱斯,好吧,我現在在船上。但我仍然認爲'!!'不是OP想要的。這可能只是「!」,對吧? –

回答

5

我想你可能只想要一個感嘆號[docs],至少如果你想對輸出做任何事情。例如:

localhost-2:tmp $ ipython 
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) 
Type "copyright", "credits" or "license" for more information. 

IPython 0.12 -- An enhanced Interactive Python. 
?   -> Introduction and overview of IPython's features. 
%quickref -> Quick reference. 
help  -> Python's own help system. 
object? -> Details about 'object', use 'object??' for extra details. 

In [1]: !ls 
a.txt 

In [2]: z = !ls 

In [3]: z 
Out[3]: ['a.txt'] 

In [4]: !!ls 
Out[4]: ['a.txt'] 

,但(這是我假設你看到)

In [10]: z = !!ls 

In [11]: z 
Out[11]: ['/bin/sh: !ls: command not found'] 

您可以什麼!!ls實際上沒有更多的信息輸入%sx?

+0

我正在嘗試雙,根據這裏的文檔:http://ipython.org/ipython-doc/rel-0.13/interactive/reference.html#system-shell-access。單身作品很好,但我不能嵌入表達式(也就是'用於!! ls'的項目) – Lucretiel

+0

據我所知,文檔中沒有包含任何支持的例子,你可以在行的開始處使用'!'或'!!'你可以寫'name =!somecmdhere'; AFAIK,就是這樣 – DSM

+0

重讀它,它看起來像你是對的,好吧,沒關係,我可以發誓我在某處看到它... – Lucretiel

2

!!快捷方式是%sx ls魔術命令的別名。這是recently,所以你的版本可能沒有這個功能。

+0

%sx和!!兩者都從行首開始工作,%sx使用變量賦值。問題是它們都不適用於嵌入表達式 – Lucretiel

相關問題