有没有办法将一段代码粘贴到 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
有没有办法将一段代码粘贴到 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
可能不是最漂亮的程序,但这有效:
cmds = '''
粘贴您的命令,然后是'''
:
a = 1
b = 2
c = 3
'''
然后exec(cmds)
将执行它们。
或者更直接地说,
exec('''
然后粘贴您的命令,然后是''')
:
a = 1
b = 2
c = 3
''')
这只是一个技巧,也许还有更正式,更优雅的方式。
IdleX为 IDLE 提供了 PastePyShell.py 扩展,它允许将多行粘贴到 shell 中以供执行。
请参阅另一篇文章:Python,在 IDLE 中编写多行代码 您可以使用编辑器(文件 > 新文件),在那里编写代码行并使用 F5
基于 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为您进行字符串操作。