我有一个字符串:
str = "pwd.getpwuid(1000)"
现在,如果我尝试eval()它可能引发异常,因为我还没有导入pwd(或者如果我有的话,可能没有)。
所以我决定编写一个解析器:将该字符串拆分为"。"并获得一个清单:
lis = ["pwd", "getpwuid(1000)"]
然后选择lis[0]
,如果它不包含"("
或")"
我致电
importlib.import_module(lis[0])
然后又是eval。
我可以做同样的事情吗?
答案 0 :(得分:0)
如何在lis [2]中分割函数的位置args和lis [3]中的命名args与一些正则表达式并执行
lib = importlib.import_module(lis[0])
lib.__dict__[lis[1]](*list[2],**list[3])
答案 1 :(得分:0)
找到解决方案:
我必须将字符串更改为包含函数体:
str = "(lambda x: __import__('pwd').getpwuid(x))(1000)"
eval()就可以了!
(lambda或def显然是相同的)