直接将代码复制并粘贴到 Python 解释器中
- 2025-01-21 09:01:00
- admin 原创
- 116
问题描述:
我想将一段代码复制并粘贴到我的 Python 解释器中。遗憾的是,由于 Python 对空格敏感,因此无法直接以合理的方式复制和粘贴它。(我认为空格被弄乱了。)
复制并粘贴的更好方法是什么?
也许我可以从文件中加载片段。
这只是一个小例子,但如果代码很多,我想避免从函数定义中输入所有内容或逐行复制和粘贴。
class bcolors:
HEADER = '[95m'
OKBLUE = '[94m'
OKGREEN = '[92m'
WARNING = '[93m'
FAIL = '[91m'
ENDC = '[0m'
def disable(self):
self.HEADER = '' # I think stuff gets mangled because of the extra level of indentation
self.OKBLUE = ''
self.OKGREEN = ''
self.WARNING = ''
self.FAIL = ''
self.ENDC = ''
解决方案 1:
通常,您可以使用IPython轻松安全地进行复制粘贴,方法是使用命令%cpaste
(手动用 结束代码--
)和%paste
(立即执行代码)。这对于测试从网页或编辑器复制的代码非常方便:这些命令甚至可以为您删除前导提示(如In[1]
和...
)。
IPython 还有一个%run
命令,它可以运行一个程序并让你进入一个 Python shell,其中包含程序中定义的所有变量,以便你可以使用它们。
为了获得这些功能的帮助:%cpaste?
,等等。
解决方案 2:
您可以简单地将所有制表符转换为空格并删除所有空行。这样您就可以将任何代码粘贴到 python 控制台(例如:python2.6)
解决方案 3:
您可以调用 execfile(filename)。与导入模块大致相同,只是它跳过了模块管理部分,并且不需要您将文件夹添加到 sys.path。
可以通过调用 exec(codestring) 来执行复制粘贴的代码。
解决方案 4:
您只需将文件导入 Python 解释器即可。这将加载类,并允许您运行代码。
例如,创建一个名为“bgcolors.py”的文件,然后将代码复制并粘贴到其中。然后使用 Python 解释器,只需输入“import bgcolors”,即可运行它。
您可以在这里阅读更多内容:
http://docs.python.org/tutorial/modules.html
解决方案 5:
我的回答专门关于复制粘贴到标准 python shell 中(仅在 linux 上测试)。
根据代码的来源和最初的格式,空格可能重要也可能不重要。特别是对于您的示例代码片段 - 从 SO 的代码格式部分复制粘贴 - 这并不重要(假设代码已正确缩进以便可执行)。
但是,空行确实会在标准python解释器中造成麻烦,因为它通常是shell-s的de-indent cmd。 在您的代码片段中,disable()
函数定义前面的空行会过早结束/退出类定义,因此当disable()
定义行出现缩进时会检测到错误:
>>> class bcolors:
... HEADER = '[95m'
... OKBLUE = '[94m'
... OKGREEN = '[92m'
... WARNING = '[93m'
... FAIL = '[91m'
... ENDC = '[0m'
...
>>> def disable(self):
File "<stdin>", line 1
def disable(self):
^
IndentationError: unexpected indent
>>>
所以你只需要注意那些空行。你的代码片段只需要 2 次多行复制粘贴操作就可以解决该空行问题。
我唯一需要做的就是 - 复制粘贴已经缩进的代码部分(比如类内部的函数) - 增加一个缩进级别,这样就不需要重新缩进复制的代码了。为此,if 1:
在粘贴代码片段之前添加一行,Enter
在之后添加一行(即空行)即可:
>>> if 1:
... def disable(self):
... self.HEADER = '' # I think stuff gets mangled because of the extra level of indentation
... self.OKBLUE = ''
... self.OKGREEN = ''
... self.WARNING = ''
... self.FAIL = ''
... self.ENDC = ''
...
>>>
解决方案 6:
您可以使用IPython,它是更好的 python repl。它具有使用 %edit 命令从外部编辑器获取输入的命令。
解决方案 7:
Dreampie允许您以适当的缩进复制和粘贴代码。
解决方案 8:
IDLE界面确实尽力保留粘贴文本的正确缩进。
解决方案 9:
我将编辑器的缩进设置从制表符改为空格。(我使用 OSX 终端运行解释器。)
解决方案 10:
有一个内置方法调用“缩进区域和去缩进区域”,您可以直接使用它。一次性粘贴大量代码后,您可以全部选中并调整空白。
解决方案 11:
对于那些在 Windows 上的 python 解释器 shell 中使用 ctrl-c 和 ctrl-v 进行复制/粘贴时遇到问题的用户,它仅显示:
>>> ^V
只需右键单击应用程序窗口标题栏并选择默认或属性,然后取消选中Use legacy console (requires relaunch)
以确保现在Enable Ctrl key shortcuts
已选中,然后关闭并重新打开 Python 解释器控制台窗口。
扫码咨询,免费领取项目管理大礼包!