将代码复制并粘贴到Python解释器中

wp1*_*123 34 python

我想将一段代码复制并粘贴到我的Python解释器中.不幸的是,由于Python对空白的敏感性,以一种有意义的方式复制和粘贴它并不简单.(我认为空白被破坏了)有更好的方法吗?也许我可以从文件中加载片段.

这只是一个小例子,但是如果有很多代码我想避免从函数的定义或复制和逐行粘贴中输入所有内容.

class bcolors: 
    HEADER = '\033[95m' 
    OKBLUE = '\033[94m' 
    OKGREEN = '\033[92m' 
    WARNING = '\033[93m' 
    FAIL = '\033[91m' 
    ENDC = '\033[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 = ''
Run Code Online (Sandbox Code Playgroud)

Eri*_*got 25

您通常可以通过命令(手动结束代码)和(立即执行代码)轻松安全地使用IPython进行复制粘贴.这对于测试从网页(例如)或编辑器中复制的代码非常方便:这些命令甚至可以为您删除前导提示(例如和).%cpaste--%pasteIn[1]...

IPython还有一个%run运行程序的命令,让你在Python shell中包含程序中定义的所有变量,以便你可以使用它们.

为了获得这些功能的帮助:%cpaste?

  • JetBrains PyCharm 也支持这一点! (2认同)

Pie*_*oet 10

你可以调用execfile(filename).与导入模块大致相同,只是它会跳过模块管理部分,并且不需要您向sys.path添加文件夹.

编辑:解决原始问题:可以通过调用exec(codestring)来执行复制粘贴代码.

  • 这是如何回答"如何粘贴python代码?"的问题. (13认同)
  • 为了使这个答案保持最新,请注意从 python 3 中删除了 `execfile`。见 /sf/ask/30533891/ (2认同)

Dan*_*scu 7

我的答案是专门关于复制粘贴到标准 python shell 中的(仅在 Linux 上测试过)。

根据代码的来源和最初的格式化方式,空格可能重要也可能无关紧要。特别是关于您的示例片段 - 从 SO 的代码格式部分复制粘贴 - 没关系(假设代码正确缩进为可执行)。

然而,空行确实会在标准 python 解释器中引起麻烦,因为它通常是shell-s de-indent cmd。在您的代码片段的情况下,函数定义前面的空行会disable()过早结束/退出类定义,因此当disable()定义行出现缩进错误时会检测到:

>>> class bcolors: 
...     HEADER = '\033[95m' 
...     OKBLUE = '\033[94m' 
...     OKGREEN = '\033[92m' 
...     WARNING = '\033[93m' 
...     FAIL = '\033[91m' 
...     ENDC = '\033[0m' 
... 
>>>     def disable(self):  
  File "<stdin>", line 1
    def disable(self):  
    ^
IndentationError: unexpected indent
>>> 
Run Code Online (Sandbox Code Playgroud)

所以你只需要注意那些空行。您的代码片段只需要 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 = ''
... 
>>>
Run Code Online (Sandbox Code Playgroud)

  • 使用两个复制粘贴操作的替代方法是简单地确保“空白”行的缩进量与代码的其余部分相同。为了避免使用“if 1:”,有几种选择:如果您的编辑器有视觉块选择(而不是行选择),请使用它。或者,选择要复制的行并在复制之前取消缩进。 (2认同)

Ant*_*ton 6

您只需将文件导入python解释器即可.这将加载类,并允许您运行代码.

例如,创建一个名为"bgcolors.py"的文件,然后将代码复制并粘贴到其中.然后使用python解释器,您只需键入"import bgcolors",您就可以运行它.

你可以在这里阅读更多:

http://docs.python.org/tutorial/modules.html


Łuk*_*asz 6

你可以使用更好的python repl的IPython.它具有使用%edit命令从外部编辑器获取输入的命令.


小智 6

您可以简单地将所有选项卡转换为空格并删除所有空行.所以你可以将任何代码粘贴到python控制台(例如:python2.6)