2016-02-14 79 views
1

用於粘貼多行輸入的%paste magic可與IPython 2一起使用,但與Jupyter控制檯(在Mac OSX El Capitan上)失敗。如何將多行輸入粘貼到Jupyter控制檯?

~ > jupyter console 
Jupyter Console 4.1.0 


In [1]: %paste 
ERROR: Line magic function `%paste` not found. 

In [2]: 

查看列出所有魔術命令的%lsmagic的輸出確實不會顯示%粘貼。

我試圖直接粘貼,但縮進會搞砸,所以顯然需要類似%paste的東西。檢查official documentation(僅在5天前更新),「粘貼」一詞甚至沒有提及。

那麼,如何將多行輸入粘貼到控制檯?

回答

-1

好的。找到解決方案。 Jupyter控制檯具有%cpaste魔術,其行爲與以前的%paste有所不同,但完成了工作。

%cpaste: 
Paste & execute a pre-formatted code block from clipboard. 

You must terminate the block with '--' (two minus-signs) or Ctrl-D 
alone on the line. You can also provide your own sentinel with '%paste 
-s %%' ('%%' is the new sentinel for this operation). 

The block is dedented prior to execution to enable execution of method 
definitions. '>' and '+' characters at the beginning of a line are 
ignored, to allow pasting directly from e-mails, diff files and 
doctests (the '...' continuation prompt is also stripped). The 
executed block is also assigned to variable named 'pasted_block' for 
later editing with '%edit pasted_block'. 

You can also pass a variable name as an argument, e.g. '%cpaste foo'. 
This assigns the pasted block to variable 'foo' as string, without 
dedenting or executing it (preceding >>> and + is still stripped) 

'%cpaste -r' re-executes the block previously entered by cpaste. 
'%cpaste -q' suppresses any additional output messages. 

Do not be alarmed by garbled output on Windows (it's a readline bug). 
Just press enter and type -- (and press enter again) and the block 
will be what was just pasted. 

IPython statements (magics, shell escapes) are not supported (yet). 

See also 
-------- 
paste: automatically pull code from clipboard. 

Examples 
-------- 
:: 

    In [8]: %cpaste 
    Pasting code; enter '--' alone on the line to stop. 
    :>>> a = ["world!", "Hello"] 
    :>>> print " ".join(sorted(a)) 
    :-- 
    Hello world! 
相關問題