【发布时间】:2019-02-19 20:56:36
【问题描述】:
我正在处理的项目遇到问题。我在代码中找到了这个问题发生的位置,并将其放在一个孤立的、简单的环境中,并且错误仍然存在。
代码如下:
def parse(input_var):
input_var = input_var.split("[METHOD]")
if(len(input_var)>1):
input_var[0] = input_var[0].replace("using ","exec(parse(")
input_var[0] = input_var[0].replace(";","))")
input_var = input_var[0]+input_var[1]
else:
input_var=input_var[0]
exec(input_var)
foo="""
using bar;
[METHOD]
print('Passed foo!')
"""
bar = """
print('Passed bar!')
"""
parse(foo)
这是运行代码的输出:
Passed bar!
Traceback (most recent call last):
File "python", line 22, in <module>
File "python", line 9, in parse
File "<string>", line 2, in <module>
TypeError: exec() arg 1 must be a string, bytes or code object
“bar”段代码导致了问题,尽管它显然是一个字符串。最糟糕的是,它从不运行“foo”代码的后半部分,而在我使用此代码的其他程序中,这部分是必要的。
【问题讨论】:
-
您是否尝试过对此进行简单调试,例如在 if 块内的每一行之后打印您的
input_var?
标签: python python-3.x exec typeerror