在Python交互式解释器中复制粘贴及缩进问题
这段代码,文件名是 test.py,
if 1:
print "foo"
print "bar"
可以通过 execfile("test.py")
或 python test.py
来成功运行,但是如果你尝试把它复制粘贴到 Python 解释器里:
File "<stdin>", line 3
print "bar"
^
SyntaxError: invalid syntax
这是为什么呢?解释器能不能设置成可以成功读取复制粘贴的文本呢?
我觉得这可能会影响在解释器里的输入,但对我来说没关系。
9 个回答
10
输入 %autoindent
可以关闭自动缩进功能。之后,你就可以在 IPython 中粘贴你的代码了。
20
我不知道标准命令提示符有什么特别的技巧,但我可以推荐你一个更高级的解释器,比如IPython,它有一种特别的语法,可以方便地粘贴多行代码:
In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop.
:for c in range(3):
: print c
:
:--
0
1
2
另一个选择是bpython解释器,它有一个自动粘贴模式(如果你打字的速度快得像个机器人):
>>> for c in range(3):
... print c
...
0
1
2
>>>
<C-r> Rewind <C-s> Save <F8> Pastebin <F9> Pager <F2> Show Source
28
缩进可能丢失或出现问题。
可以看看 IPython——这是一个增强版的Python解释器,提供了许多方便的功能。其中一个功能是魔法命令 %paste
,它允许你粘贴多行代码。
它还支持自动补全、自动缩进……还有很多其他功能。可以去他们的网站看看。
在IPython中使用 %paste
:
而且在Qt控制台中,复制和粘贴的功能也得到了修复。这里展示的是在新的 IPython qtconsole 中,简单的复制和粘贴代码块是“直接可用”的: