在Python交互式解释器中复制粘贴及缩进问题

28 投票
9 回答
41989 浏览
提问于 2025-04-17 04:00

这段代码,文件名是 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 中,简单的复制和粘贴代码块是“直接可用”的:

在这里输入图片描述

撰写回答