我想将一段代码复制并粘贴到我的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)
Pie*_*oet 10
你可以调用execfile(filename).与导入模块大致相同,只是它会跳过模块管理部分,并且不需要您向sys.path添加文件夹.
编辑:解决原始问题:可以通过调用exec(codestring)来执行复制粘贴代码.
我的答案是专门关于复制粘贴到标准 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)
您只需将文件导入python解释器即可.这将加载类,并允许您运行代码.
例如,创建一个名为"bgcolors.py"的文件,然后将代码复制并粘贴到其中.然后使用python解释器,您只需键入"import bgcolors",您就可以运行它.
你可以在这里阅读更多:
http://docs.python.org/tutorial/modules.html
归档时间: |
|
查看次数: |
65242 次 |
最近记录: |