转到模块[Python]中出错
好的,让我先说我知道使用goto模块是不好的,我不应该这样,诸如此类。然而,为了这个特殊的目的,我需要它。我还要说,我是Python新手,所以请尽量避免复杂的答案,谢谢 现在让我来解释一下我的问题(我在Linux上)。当我运行我的小程序时,它运行良好,直到我输入第一个字符串。键入字符串并按enter键后,会出现以下错误:转到模块[Python]中出错,python,python-2.7,Python,Python 2.7,好的,让我先说我知道使用goto模块是不好的,我不应该这样,诸如此类。然而,为了这个特殊的目的,我需要它。我还要说,我是Python新手,所以请尽量避免复杂的答案,谢谢 现在让我来解释一下我的问题(我在Linux上)。当我运行我的小程序时,它运行良好,直到我输入第一个字符串。键入字符串并按enter键后,会出现以下错误: Traceback (most recent call last): File "main.py", line 16, in <module> e
Traceback (most recent call last):
File "main.py", line 16, in <module>
empid = input("Example Input: ")
File "<string>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/goto.py", line 255, in _trace
_addToCaches(filename)
File "/usr/local/lib/python2.7/dist-packages/goto.py", line 230, in _addToCaches
in tokenize.generate_tokens(open(moduleFilename, 'r').readline):
IOError: [Errno 2] No such file or directory: '<string>'
当我在输入中输入字符串后按enter键时,就会发生错误。在Python中没有绝对需要goto的用例。在最坏的情况下,请使用一个工具,并更手动地跟踪您的状态
goto.py
是一个。永远不要使用它。如果您认真地使用它,那么您就没有认真地使用Python。然而,来源很简单,因此我们可以从纯学术的角度找出为什么会发生这种情况
goto.py:284
包含行sys.settrace(\u trace)
。该函数被设计为供调试器使用,基本上在Python实际执行之前“捕获”每一行,以创建这些伪语法。第251行中定义的函数\u trace
假定将要执行的每一行代码都有一个关联的文件名,并且可以打开该文件名
但是,当运行input
函数时,它会执行任意Python代码来计算字符串。这是一个愚蠢的行为,但它就是这样做的,在Python3中它被更改为只返回字符串。对代码求值时,它将其文件名视为
。此文件名不存在,因此当\u trace
函数看到代码时,它无法打开文件名并在“调试”时崩溃
解决方案:确保您永远不会执行没有与之关联的现有文件的代码。避免使用
eval
、input
、exec
,以及任何在文件之外计算代码的方法。使用raw\u input
。请显示导致错误的代码。“我是python新手,因此我使用goto”与“我是python新手,因此我使用eval”一样有意义。我建议在你开始做这样的事情之前先了解一下语言:P@Cether如果您需要转到,那么您使用的Python是错误的。在您指定的链接中,它甚至说这是一个愚人节的笑话,意味着永远不会在真正的代码中使用。它甚至不能保证它能在Python的未来版本中工作(这可能是它不能工作的原因)。为什么您需要转到
?为什么使用input
而不是raw\u input
?你确定你真的需要运行os.system('clear')
?@Cether,你的问题是你的程序需要goto
模块,但是你在上面评论说你知道这是个笑话,你只是对它为什么不起作用感兴趣?是哪一个?那是我的问题。谢谢。@Cether和往常一样,警告的话是:不要使用goto
。几乎所有在C中有意义的goto
情况都可以被循环、函数和异常所取代。出于好奇,你首先为什么真的需要goto
?
from goto import *
import time
import sys
import os
label .start
os.system('clear')
print "Example Printout"
exampin = input("Example Input: ")