IPython的魔术粘贴如何工作?
我想复制已经缩进的Python代码/整个函数和类到IPython中。 每次我尝试缩进是搞砸了,我得到以下错误信息:
IndentationError: unindent does not match any outer indentation level (<ipython-input-23-354f8c8be51b>, line 12)
If you want to paste code into IPython, try the %paste and %cpaste magic functions.
您不能直接复制到IPython。 这是步骤:
- 将要复制到IPython的行复制到剪贴板中
- 在IPython中input
%paste
- 按回车
- 利润!
澄清步骤:
-
首先,将目标行复制到剪贴板中。
-
键入iPython提示符:
- 如果在Tkinter上:input
%paste
- 否则:input
%cpaste
- 如果在Tkinter上:input
-
粘贴(Ctrl-V)并回车。
-
然后input
--
然后回车。
例如:
In [1]: %cpaste Pasting code; enter '--' alone on the line to stop or use Ctrl-D. :for l in "Hello World": : print l, :-- H ello W orld
从Ipython 5开始,你不需要任何魔法命令,只需粘贴即可
感谢
prompt_toolkit
,IPython
现在支持:
- 键入时突出显示语法
- 真正的多行编辑(向上和向下箭头键在行之间移动)
- 多行粘贴,无需缩进缩进或立即执行代码
- 更好的代码完成界面(我们计划改进更多)可选鼠标支持
更多关于这里
将ipython
升级到最新版本
pip install ipython --upgrade
%paste
需要Tkinter
。 如果你在Ubuntu的,你可以通过安装它
sudo apt-get install python-tk
然后重新启动ipython并使用%paste
paste从剪贴板粘贴。
其中一个有用的答案在评论中丢失了,所以想重申一遍,同时添加另一个有用的IPython魔术函数的参考。
首先要重申一下@EOL说的,解决OP问题的一个办法就是先closures自动缩进,首先运行%autoindent
并进行粘贴(当然,如果你使用%paste
,则不需要)。
现在要在这里添加更多信息,在IPython中另外一个有用的模式是%doctest_mode
,它允许您从文档string中复制粘贴示例和testing代码片段。 这对执行交互式python会话输出也很有用,您可以在文档和在线论坛中find这些输出,而不必先提取出提示string。
对于使用Python 3的ubuntu用户。
python-tk
适用于Python 2。
为了让%paste
在Python 3上工作,安装python3-tk
包:
sudo apt-get install python3-tk