相关疑难解决方法(0)

Python:使eval安全

我想要一种简单的方法在Python中执行"计算器API".

现在,我并不关心计算器将支持的确切功能集.

我希望它接收一个字符串,"1+1"并在我们的例子中返回一个包含结果的字符串"2".

有没有办法让eval这种东西安全?

首先,我会这样做

env = {}
env["locals"]   = None
env["globals"]  = None
env["__name__"] = None
env["__file__"] = None
env["__builtins__"] = None

eval(users_str, env)
Run Code Online (Sandbox Code Playgroud)

这样调用者就不会搞乱我的局部变量(或看到它们).

但我相信我在这里监督很多.

eval安全问题是否可以解决,或者是否存在太多微小的细节以使其正常工作?

python eval

39
推荐指数
2
解决办法
3万
查看次数

查看*any*字符是否在字符串中并删除它们

所以我在Python 3中有一个简单的程序,它只是一个基本的计算器.这是一段代码:

calculation = input("What calculation do you want to do?\n")
if "+" in calculation:
    numbers = calculation.split("+")
    answer = int(numbers[0]) + int(numbers[1])
Run Code Online (Sandbox Code Playgroud)

我下面还有其他一些操作设置.问题是如果有人要输入任何东西以及操作(例如10 ++ 2或10 + abc2),代码会抛出错误,因为它显然无法向abc2添加10.

我认为我可以通过测试每个角色来解决问题,但肯定这是一个很长的路要走.有没有办法用Python解决问题?

python string

2
推荐指数
1
解决办法
91
查看次数

标签 统计

python ×2

eval ×1

string ×1