2012-08-22 41 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

相关问题