34

有没有办法将一段代码粘贴到 IDLE 中?逐行粘贴有效,但有时我想一次粘贴多行。当我尝试时,IDLE 读取第一行并忽略其余部分。

>>> a = 1
b = 2
c = 3

>>> 
>>> a
1
>>> b

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    b
NameError: name 'b' is not defined
4

4 回答 4

50

可能不是最漂亮的程序,但这有效:

cmds = '''

粘贴您的命令,然后是'''

a = 1
b = 2
c = 3
'''

然后exec(cmds)将执行它们。

或者更直接地说,

exec('''

然后粘贴您的命令,然后是''')

a = 1
b = 2
c = 3
''')

这只是一个技巧,也许还有更正式,更优雅的方式。

于 2009-10-23T19:48:47.487 回答
8

IdleX为 IDLE 提供了 PastePyShell.py 扩展,它允许将多行粘贴到 shell 中以供执行。

于 2012-03-26T07:34:27.250 回答
2

请参阅另一篇文章:Python,在 IDLE 中编写多行代码 您可以使用编辑器(文件 > 新文件),在那里编写代码行并使用 F5

于 2017-06-16T13:58:04.773 回答
0

基于 RedGlyph 的答案,但使用 AutoHotKey 进行了一些自动化操作:

; python Idle shell
#IfWinActive ahk_exe pythonw.exe

^+x::  ; Idle - multiple commands paste 
SoundBeep,1700, 150
send, ^{end}
var1 = cmds = '''
var2 := clipboard
var3 = %var1%%var2%
var4 = %var3%'''
msgbox,,, %var4%,2
clipboard = %var4%
send, ^{vk0x56}   ;send, ^v
send, {enter}
sleep, 1000
send, exec(cmds)
return

您需要安装AutoHotKey才能完成这项工作。安装 AutoHotKey 后,上述代码示例必须保存在扩展名为 AHK 的文件中(例如 Idle.ahk),并且应始终运行以启用快捷键: Ctrl+Shift+x为您进行字符串操作。

于 2021-09-11T18:56:04.260 回答