gpt4 book ai didi

python - (Python 3.X) Python exec() 函数无缘无故抛出 TypeError

转载 作者:行者123 更新时间:2023-11-30 22:07:55 25 4
gpt4 key购买 nike

我正在处理的项目遇到了问题。我在代码中找到了这个问题发生的地方,并将其放在一个隔离的、简单的环境中,并且错误仍然存​​在。

代码如下:

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”代码的后半部分,而在我使用此代码的其他程序中,后半部分是必要的。

最佳答案

出现此错误是因为 input_var 包含 exec。因此,您尝试执行该代码,该代码又尝试执行另一个代码。第二次 exec 的参数不是字符串,而是函数 parse。因此,从 input_var 中删除 exec 一词。然后你就不会得到任何错误并得到输出:

Passed bar!
Passed foo!

关于python - (Python 3.X) Python exec() 函数无缘无故抛出 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52342233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com